我一直在寻找这个奇怪的错误几个小时,但没有找到任何东西。我有一个非常简单的实体:实体框架代码优先:更新SetInitializer抛出异常
public class Company {
public Guid Id { get; set; }
public string Name { get; set; }
}
这里是上下文:
public class MyDBContext : DbContext {
public DbSet<Company> Companies { get; set; }
}
当第一次运行时,一切工作就好了。但是,当我更改实体时(例如,我将Id的[Key]属性),我得到了预期的“模型已更改”或错误。所以,我在Global.asax application_start中输入:
Database.SetInitializer<MyDBContext>
(new DropCreateDatabaseIfModelChanges<MyDBContext>());
这是我卡住的地方。没有编译错误,它编译没有错误/警告。但是,当我运行我的项目时,出现以下错误:
说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。
异常详细信息:System.TypeLoadException: GenericArguments[0], 'MyDB.Data.MyDBContext', on 'System.Data.Entity.IDatabaseInitializer1[TContext]' violates the constraint of type parameter 'TContext'
。
请问,有人有线索吗?我正在使用实体框架4.1(CTP5)
终于有了提示。我的数据库上下文位于类库项目中,而Global.asax当然是在MVC3 Web应用程序中。将整个数据库逻辑移动到相同的MVC3 Web应用程序解决了这个问题。那么为什么它不在类库中工作呢? – user825887
F * ck这个,小时后解决。结果发现库类使用4.0.0和Web应用程序4.0.1。射击我。 – user825887
先生,你刚好救了我几个小时,把头撞到桌子上。把你的答案,我立即upvote它。 – Andrey