0

我有一些模型类继承自单个抽象类,而抽象类又派生自 BaseEntity

公共抽象类项目: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'。Validators: EntityType: EntitySet 'Validators' 基于没有定义键的类型'Validator'。DataTypes:EntityType:EntitySet 'DataTypes' 基于没有定义键的类型'DataType'。结构类型:EntityType:EntitySet ' StructuralTypes' 基于没有定义键的类型'StructuralType'。ValidationErrors:EntityType:EntitySet 'ValidationErrors' 基于没有定义键的类型'ValidationError'。ValidationContexts:EntityType:EntitySet 'ValidationContexts' 基于没有定义键的类型'ValidationContext'。StructuralProperties:EntityType:EntitySet 'StructuralProperties' 基于没有定义键的类型'StructuralProperty'。没有定义键。StructuralProperties:EntityType:EntitySet 'StructuralProperties' 基于没有定义键的类型'StructuralProperty'。没有定义键。StructuralProperties:EntityType:EntitySet 'StructuralProperties' 基于没有定义键的类型'StructuralProperty'。

在 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.LazyInternalContext.get_ModelBeingInitialized() 在 System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(DbContext context, XmlWriter writer) --- 内部异常堆栈跟踪结束 --- 在 System.RuntimeMethodHandle.InvokeMethod(Object目标、Object[] 参数、签名 sig、布尔构造函数)在 System.System.RuntimeType 中的 Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfoculture)。 Microsoft.DbContextPackage.Handlers.ViewContextHandler.ViewContext(MenuCommand menuCommand, Object context, Type 的 InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] 修饰符, CultureInfoculture, String[] namedParams)系统上下文类型)Microsoft.DbContextPackage.Handlers.ViewContextHandler.ViewContext(MenuCommand menuCommand, Object context, Type 的 InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] 修饰符, CultureInfoculture, String[] namedParams)系统上下文类型)Microsoft.DbContextPackage.Handlers.ViewContextHandler.ViewContext(MenuCommand menuCommand, Object context, Type 的 InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] 修饰符, CultureInfoculture, String[] namedParams)系统上下文类型)

如果我删除 BaseEntity 继承并创建实体数据模型,它会成功完成。BaseEntity 做了什么来破坏我的模型?

现实世界的问题是,当我尝试从 DataService.Metadata() 调用返回元数据时,它也会遇到此错误。

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

谢谢

4

1 回答 1

0

最终使用了“hack”,即我的服务器端实体模型没有派生 BaseEntity,但我的客户端实体模型却派生了。我通过在 VS 中使用部分类和文件链接来实现这一点

于 2014-09-23T21:18:38.633 回答