Asp.net mvc 3 未定义键EntityFramework CTP5
我正在使用EntityFramework CTP5、SQL Server 2008运行MVC3 我不认为这是个问题,但我想我可以提一下。 因为我很懒,所以我创建了linqtosql,复制了属性定义并粘贴到我自己的模型中,然后删除了dbml文件 EntityFramework的某些数据类型可能是错误的吗? 我对EntityFramework还是相当陌生的 我添加了[key]注释Asp.net mvc 3 未定义键EntityFramework CTP5,asp.net-mvc-3,sql-server-2008,entity-framework-ctp5,Asp.net Mvc 3,Sql Server 2008,Entity Framework Ctp5,我正在使用EntityFramework CTP5、SQL Server 2008运行MVC3 我不认为这是个问题,但我想我可以提一下。 因为我很懒,所以我创建了linqtosql,复制了属性定义并粘贴到我自己的模型中,然后删除了dbml文件 EntityFramework的某些数据类型可能是错误的吗? 我对EntityFramework还是相当陌生的 我添加了[key]注释 [Key] public System.Guid FormID; 我仍然得到这个错误 System.Data.Enti
[Key]
public System.Guid FormID;
我仍然得到这个错误
System.Data.Entity.ModelConfiguration.ModelValidationException: One or more validation errors were detected during model generation:
System.Data.Edm.EdmEntityType: : EntityType 'FormInfo' has no key defined. Define the key for this EntityType.
System.Data.Edm.EdmEntitySet: EntityType: The EntitySet FormInfoes is based on type FormInfo that has no keys defined.
我注意到EntitySet中的“FormInfo”设置为“FormInfo”。所以,我把它添加到我的上下文中
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Conventions.Remove();
基于模型创建(modelBuilder);
}
我正在初始化上下文
DbDatabase.SetInitializer<SQLServerContext>(null);
DbDatabase.SetInitializer(null);
由于数据库已经存在,我不想重新创建或删除它
谢谢任何人的帮助 您已经定义了一个字段。不是财产。将声明更改为属性
[Key]
public System.Guid FormID { get; set; }
我添加这行代码是为了从“forminfo”modelBuilder.Conventions.remove()中删除“es”;还是不走运,所以大部分问题都解决了。但是我现在得到了这样的结果:System.Data.Edm.EdmEntityType::EntityType'XElement'没有定义键。定义此EntityType.System.Data.Edm.EdmEntitySet的键:EntityType:EntitySet XElement基于未定义键的类型XElement。映射框架类将很困难。您需要使用fluent API来配置密钥
modelBuilder.Entity().HasKey(x=>x.Foo)
感谢Eranga的帮助。