我有一些继承自单个抽象类的模型类,而后者又是从BaseEntity派生的
公共抽象类Item:BaseEntity
当我尝试在我的上下文中创建实体数据模型时,我收到以下错误: System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> System.Data.Entity.ModelConfiguration.ModelValidationException:在模型生成期间检测到一个或多个验证错误:
DataLayer.EntityAspect :: EntityType' EntityAspect'没有定义键。定义此EntityType的键。 DataLayer.EntityKey :: EntityType' EntityKey'没有定义键。定义此EntityType的键。 DataLayer.MetadataStore :: EntityType' MetadataStore'没有定义键。定义此EntityType的键。 DataLayer.Validator :: EntityType' Validator'没有定义键。定义此EntityType的键。 DataLayer.DataType :: EntityType' DataType'没有定义键。定义此EntityType的键。 DataLayer.StructuralType :: EntityType' StructuralType'没有定义键。定义此EntityType的键。 DataLayer.ValidationError :: EntityType' ValidationError'没有定义键。定义此EntityType的键。 DataLayer.ValidationContext :: EntityType' ValidationContext'没有定义键。定义此EntityType的键。 DataLayer.StructuralProperty :: EntityType' StructuralProperty'没有定义键。定义此EntityType的键。 EntityAspects:EntityType:EntitySet' EntityAspects'基于类型' EntityAspect'没有定义键。 EntityKeys:EntityType:EntitySet' EntityKeys'基于类型' EntityKey'没有定义键。 MetadataStores:EntityType:EntitySet' MetadataStores'基于类型' MetadataStore'没有定义键。 验证器:EntityType:EntitySet'验证器'基于类型'验证器'没有定义键。 DataTypes:EntityType:EntitySet' DataTypes'基于类型'数据类型'没有定义键。 StructuralTypes:EntityType:EntitySet' StructuralTypes'基于类型' StructuralType'没有定义键。 ValidationErrors:EntityType:EntitySet' ValidationErrors'基于类型' ValidationError'没有定义键。 ValidationContexts:EntityType:EntitySet' ValidationContexts'基于类型' ValidationContext'没有定义键。 StructuralProperties:EntityType:EntitySet' StructuralProperties'基于类型' StructuralProperty'没有定义键。
at 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输入) 在System.Data.Entity.Internal.LazyInternalContext.InitializeContext() 在System.Data.Entity.Internal.LazyInternalContext.get_ModelBeingInitialized() 在System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(DbContext context,XmlWriter writer) ---内部异常堆栈跟踪结束--- at System.RuntimeMethodHandle.InvokeMethod(Object target,Object [] arguments,Signature sig,Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,Object [] parameters,Object [] arguments) 在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化) at System.RuntimeType.InvokeMember(String name,BindingFlags bindingFlags,Binder binder,Object target,Object [] providedArgs,ParameterModifier [] modifiers,CultureInfo culture,String [] namedParams) 在Microsoft.DbContextPackage.Handlers.ViewContextHandler.ViewContext(MenuCommand menuCommand,Object context,Type systemContextType)
如果我删除了BaseEntity继承并创建了一个实体数据模型,它就会成功完成。什么是BaseEntity打破我的模型?
现实世界的问题是,当我尝试从DataService.Metadata()调用返回元数据时,它也会遇到此错误。
任何想法如何解决这个问题?
由于
答案 0 :(得分:0)
结束使用" hack"我的服务器端实体模型没有派生出BaseEntity,但我的客户端实体模型却没有。我通过在VS
中使用部分类和文件链接来完成此操作