实体框架错误3002/3003 - 继承/键映射问题

时间:2011-06-06 13:34:52

标签: entity-framework

我有一个数据模型如下:

Data Model

客户拥有产品和付款方式。可以为每个产品分配任何或所有客户的付款方式,默认设置为一组。

外键是:

Customer.CustomerId => Product.CustomerId
Customer.CustomerId => PaymentMethod.CustomerId
Product.ProductId => ProductPaymentMethod.ProductId
PaymentMethod.PaymentMethodId => ProductPaymentMethod.PaymentMethodId

我想为演示目的自定义此模型,客户需要一组付款方式和一组产品。产品包含从PaymentMethod继承的ProductPaymentMethods集合。

我删除了PaymentMethod和ProductPaymentMethod之间的关联,从PaymentMethod向ProductPaymentMethod添加了一个继承,并从ProductPaymentMethod中删除了PaymentMethodId。

这是我的模特:

Presentation Model

当我保存模型或构建项目时,我得到2个错误:

  

错误3002:映射问题   片段从行开始   226:潜在的运行时违规   表ProductPaymentMethod的键   (ProductPaymentMethod.ProductPaymentMethodId):   列   (ProductPaymentMethod.ProductPaymentMethodId)   映射到EntitySet   PaymentMethods的属性   (PaymentMethods.ProductPaymentMethodId)   在概念方面,但他们没有   形成EntitySet的关键属性   (PaymentMethods.PaymentMethodId)。

  

错误3003:映射问题   片段从第226行开始:全部   关键属性   (PaymentMethods.PaymentMethodId)的   EntitySet PaymentMethods必须是   映射到所有关键属性   (ProductPaymentMethod.ProductPaymentMethodId)   表ProductPaymentMethod。

我做错了什么?

编辑:在完成了一些谷歌搜索之后,我找到了几种解决方案,其中大部分并不适合这种情况。大多数人谈论继承需要1-1而不是1-many关系。但是,由于Customer to Product 1-many关系,该模型在PaymentMethod和ProfilePaymentMethod之间需要1-many。是不是可以做我正在尝试的事情?

1 个答案:

答案 0 :(得分:0)

到目前为止,我唯一的答案是有一些手动创建的POCO类用于演示,Mapper类用于将我的数据实体转换为表示实体