EF运行时报错“未定义键。请为该 EntityType 定义键。

EF运行时报错“未定义键。请为该 EntityType 定义键。

7082发表于2016-03-16

捕捉到 System.Data.Entity.ModelConfiguration.ModelValidationException
  _HResult=-2146233088
  _message=模型生成过程中检测到一个或多个验证错误:

XX.AccountRecord: : EntityType“AccountRecord”未定义键。请为该 EntityType 定义键。
AccountRecord: EntityType: EntitySet“AccountRecord”基于未定义任何键的类型“AccountRecord”。

  HResult=-2146233088
  IsTransient=false
  Message=模型生成过程中检测到一个或多个验证错误:

XX.Models.ZQSC_Main.AccountRecord: : EntityType“AccountRecord”未定义键。请为该 EntityType 定义键。
AccountRecord: EntityType: EntitySet“AccountRecord”基于未定义任何键的类型“AccountRecord”。

  Source=EntityFramework
  StackTrace:
       在 System.Data.Entity.Core.Metadata.Edm.EdmModel.Validate()
       在 System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo)
       在 System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
       在 System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
       在 System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
       在 System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
       在 System.Data.Entity.Internal.InternalContext.Initialize()
       在 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
       在 System.Data.Entity.Internal.linq.InternalSet`1.Initialize()
       在 System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
       在 System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()

       在 System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source, Expression`1 predicate)


解决办法:

为指定model类AccountRecord定义一个主键。

而key元属性在System.ComponentModel.DataAnnotations.dll程序集中。

小编蓝狐