【问题标题】:Entity Framework Error 3002 / 3003 - Inheritance / key mapping issue实体框架错误 3002 / 3003 - 继承/键映射问题
【发布时间】:2011-09-09 07:35:13
【问题描述】:

我有一个数据模型如下:

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

外键是:

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

我想自定义此模型以进行演示,客户拥有一组付款方式和一组产品。产品具有继承自 PaymentMethod 的 ProductPaymentMethods 集合。

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

现在这是我的模型:

当我保存模型或构建项目时,出现 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 关系的继承。但是,由于客户与产品的一对多关系,该模型需要 PaymentMethod 和 ProfilePaymentMethod 之间的一对多。难道不能做我正在尝试的事情吗?

【问题讨论】:

  • 链接或您找到的附近解决方案的摘要会很好。

标签: entity-framework


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-05-17
    • 1970-01-01
    • 2011-05-16
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    相关资源
    最近更新 更多