我目前正在为新数据库创建 InitialCreate 迁移。我是这个迁移框架的新手,不知道它到底生成了什么,我一直在运行update-database以查看结果,删除数据库然后update-database在进行一些更改以查看结果后再次运行。
现在我做了两次更改,去运行更新并收到如下错误:
应用基于代码的迁移:201209121936571_InitialCreate。System.Resources.MissingManifestResourceException: 找不到适合指定区域性或中性区域性的任何资源。确保在编译时将“$assemblyName$.resources”正确嵌入或链接到程序集“$assemblyName$”中,或者确保所有所需的附属程序集都是可加载的并已完全签名。在 [堆栈跟踪]
然后它以红色结尾
找不到适合指定文化或中性文化的任何资源。确保在编译时将“$assemblyName$.Migrations.InitialCreate.resources”正确嵌入或链接到程序集“$assemblyName$”中,或者确保所有所需的附属程序集都可加载且已完全签名。
我第一次遇到这个问题时,我删除了迁移文件夹,enable-migrations重新进行了更改并能够运行迁移。
它再次发生,我不想每次发生这种情况时都必须重新创建文件。有谁知道如何更正此问题以使迁移再次工作?
entity-framework entity-framework-5 entity-framework-migrations
我需要在每个数据库会话开始时执行一些 SQL 命令。我通过 DbContext 使用 Entity Framework 5 与 Oracle 11g 数据库交谈。
我想执行:
ALTER SESSION SET NLS_COMP=ANSI;
ALTER SESSION SET NLS_SORT=BINARY_CI;
Run Code Online (Sandbox Code Playgroud)
在会话创建开始时进行不区分大小写的搜索。
我怎么能最好地解决这个问题?
我已经将命令放在 dbContext 的构造函数中,但只有简单的单元测试,它似乎确实有效。但不确定这是否正确
public partial class Entities : DbContext
{
public Entities()
: base("name=Entities")
{
this.Database.ExecuteSqlCommand("ALTER SESSION SET NLS_COMP=ANSI");
this.Database.ExecuteSqlCommand("ALTER SESSION SET NLS_SORT=BINARY_CI");
}
}
Run Code Online (Sandbox Code Playgroud) 这些是我的课程:
public class Post : IPost
{
public int Id { get; set; }
public virtual int[] DuplicateOf { get; set; }
public virtual ICommentInfo[] Comments { get; set; }
}
public class CommentInfo : ICommentInfo
{
public virtual string Author { get; set; }
public virtual int Id { get; set; }
public virtual string Text { get; set; }
public virtual int PostId{ get; set; }
[ForeignKey("PostId")]
public virtual Post Post { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
将此 CommentConfiguration …
foreign-key-relationship code-first navigation-properties ef-code-first entity-framework-5
我最近编写了一个带有代码优先后端的 WPF 应用程序(SQL CE 4.0 数据库)。该应用程序现已广泛使用,并由非技术人员使用。
我做了一些更改,我需要添加一个迁移来反映这些更改,我已经成功完成了。只需使用命令,我就可以让它在本地计算机上正常工作Update-Database。
当我部署更新时,这将如何工作?我似乎无法弄清楚我的客户数据库将如何迁移。每当我在不是我的开发机器的机器上运行时,我都会收到以下错误;
无法更新数据库以匹配当前模型,因为存在挂起的更改并且自动迁移被禁用。将待处理的模型更改写入基于代码的迁移或启用自动迁移。将 DbMigrationsConfiguration.AutomaticMigrationsEnabled 设置为 true 以启用自动迁移。
PS 我绝对不想启用自动迁移;)
更新 - -
这是我的初始化程序;
Database.SetInitializer(new Initializer());
Run Code Online (Sandbox Code Playgroud)
这是我实际的初始化程序;
public class Initializer : MigrateDatabaseToLatestVersion<Context, Configuration>
{
}
Run Code Online (Sandbox Code Playgroud)
这是我的 Configuration 类的构造函数;
public Configuration()
{
AutomaticMigrationsEnabled = false;
DbMigrator migrator = new DbMigrator(this);
if (migrator.GetPendingMigrations().Any())
{
_pendingMigrations = true;
migrator.Update();
}
}
Run Code Online (Sandbox Code Playgroud) 视觉工作室 2013
我正在尝试在 PluralSight 学习 asp.net MVC。我创建了一个名为 eManagr.Domain 的项目(dll),其中包含以下类:Department / Employee / IDepartmentDatasource
部门.cs
public class Department
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Employee> Employees { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
员工.cs
public class Employee
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
部门数据源
public interface IDepartmentDataSource
{
IQueryable<Employee> Employees { get; }
IQueryable<Department> Departments { get; } …Run Code Online (Sandbox Code Playgroud) 我试图使用Entityframework Connection建立SQL连接,我在谷歌获得了beow代码
((EntityConnection)dataContext.Connection).StoreConnection;
Run Code Online (Sandbox Code Playgroud)
但我无法获得Connection属性.它不可用,并认为在EF5中会发生类似于以下代码的一些更改,并在此处发布我的说明.
dataContext.ContextOptions.LazyLoadingEnabled
Run Code Online (Sandbox Code Playgroud)
在EF5中
dataContext.Configuration.LazyLoadingEnabled
Run Code Online (Sandbox Code Playgroud)
如何获得EF5中的连接属性?或者我错过了什么!
谢谢
在我的项目中,我使用Entity Framework 4.4.0.0,我遇到了以下困境.我必须检查用户是否被激活.我的查询如下:
任何()
_context.Users.Any(u => u.Id == userId && u.IsActivated);
Run Code Online (Sandbox Code Playgroud)
生成的sql是:
SELECT CASE
WHEN ( EXISTS (SELECT 1 AS [C1]
FROM [dbo].[Users] AS [Extent1]
WHERE ( [Extent1].[Id] = @p__linq__0 )
AND ( [Extent1].[IsActivated] = 1 )) ) THEN cast(1 AS BIT)
WHEN ( NOT EXISTS (SELECT 1 AS [C1]
FROM [dbo].[Users] AS [Extent2]
WHERE ( [Extent2].[Id] = @p__linq__0 )
AND ( [Extent2].[IsActivated] = 1 )) ) THEN cast(0 AS BIT)
END AS [C1]
FROM (SELECT 1 AS X) AS …Run Code Online (Sandbox Code Playgroud) 鉴于:
public ActionResult List()
{
using (var unitOfWork = new UnitOfWork())
{
var result = unitOfWork.Repository.Find<EntityAddress>(a => a.PostalCode == "80001");
//return View(result.ToList());//NO Exception raised with ToList()
return View(result);//EXCEPTION RAISED IN VIEW DURING ITERATION
}
}
Run Code Online (Sandbox Code Playgroud)
UnitOfWork是一次性的,处理我的DbContext.它还禁用构造函数中的延迟加载:
public UnitOfWork()
{
_dbContext.Configuration.LazyLoadingEnabled = false;
Repository = new GenericRepository<MyEntities>(_dbContext);
}
public void Dispose()
{
Repository.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
而Find<EntityAddress>()实施工程以:
_dbContext.Set<EntityAddress>().Where(predicate) 其中谓词是类型的参数 Expression<Func<EntityAddress, bool>>
为什么即使在禁用延迟加载后也会出现处理异常?
我试图为具有两个关键属性的模型类型定义一个键,并定义如下:
type Model () =
member val IdOne = 0 with get, set
member val IdTwo = 0 with get, set
member val OtherProperty = "" with get, set
Run Code Online (Sandbox Code Playgroud)
当我尝试在Entity Framework 5中使用此模型时,我收到错误"模型没有定义键.定义此EntityType的键".给出了模型类型,我无法更改它们并添加[<Key>]属性.所以我尝试了Fluent API.
在C#中,你会做这样的事情:
modelBuilder.Entity<Model>().HasKey(m => new { m.IdOne, m.IdTwo });
Run Code Online (Sandbox Code Playgroud)
它使用匿名类型.但对于我的生活,我无法弄清楚如何在F#中解决这个问题.我尝试了Tuples,Records,甚至是具有IdOne和IdTwo属性的常规类型:
// Regular type with properties IdOne & IdTwo.
type ModelKey (idOne, idTwo) =
member this.IdOne = idOne
member this.IdTwo = idTwo
modelBuilder.Entity<Model>().HasKey(fun (m : Model) -> ModelKey (m.IdOne, m.IdTwo))
// ArgumentNullException: Value cannot be null. Parameter …Run Code Online (Sandbox Code Playgroud) 我有以下抽象类,我的所有存储库都继承自:
abstract class RepositoryBase<T> {
void Add();
void Delete();
void SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我想添加另一种方法来自动分页IQueryable<T>并List<T>从结果中返回a :
protected List<T> Paginate(IQueryable<T> content, int? skip, int? take)
{
if (skip.HasValue) content = content.Skip(skip.Value);
if (skip.HasValue && take.HasValue) content = content.Take(take.Value);
return content.ToList();
}
Run Code Online (Sandbox Code Playgroud)
但是,Skip要求来源IOrderedQueryable<T>.我尝试将方法签名更改为:
Paginate(IOrderedQueryable<T> content, int? skip, int? take)
Run Code Online (Sandbox Code Playgroud)
但Skip返回一个,IQueryable<T>所以我收到错误Cannot convert source type 'System.Linq.IQueryable<T>' to target type 'System.Linq.IOrderedQueryable<T>'
如何强制实现类发送我的方法IOrderedQueryable<T>并使我的paginate方法工作?
c# ×5
asp.net-mvc ×1
code-first ×1
dbcontext ×1
entity-framework-migrations ×1
f# ×1
f#-3.0 ×1
iqueryable ×1
linq ×1
oracle11g ×1
performance ×1
t-sql ×1
wpf ×1