当模型从BaseEntity继承时,ModelValidationException

时间:2014-07-15 21:50:41

标签: breeze breeze-sharp

我有一些继承自单个抽象类的模型类,而后者又是从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()调用返回元数据时,它也会遇到此错误。

任何想法如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:0)

结束使用" hack"我的服务器端实体模型没有派生出BaseEntity,但我的客户端实体模型却没有。我通过在VS

中使用部分类和文件链接来完成此操作