我一直在寻找这个奇怪的错误几个小时但没找到任何东西。我有一个非常简单的实体:
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'
。
拜托,有人有线索吗?我正在使用Entity Framework 4.1(CTP5)
答案 0 :(得分:2)
对于未回答的问题拖网渔船,上面已经回答了这个问题。但从未标记过用户。见上面的评论。超过1K的意见!那是浪费了很多时间......所以我加了这个。
答案 1 :(得分:0)
如果您正在使用Web.config(而不是Global.asax)和多个项目文件(我通常在ASP.NET MVC中创建一个[ Projectname ]。包含MVC的WebUI文件和[项目名称]。域是一个包含数据逻辑的类库,然后您需要将以下代码添加到解决方案中的所有Web.config / App.config:
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
这对我有用,无需将我的Domain项目与WebUI项目合并。