2011-06-06 52 views
1

我有一個數據模型如下:實體框架錯誤3003分之3002 - 繼承/按鍵映射問題

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:的 的EntitySet的PaymentMethods所有 鍵屬性 (PaymentMethods.PaymentMethodId)必須 映射到所有的關鍵表ProductPaymentMethod的 (ProductPaymentMethod.ProductPaymentMethodId) 。

我在做什麼錯?

編輯:做了一些進一步的谷歌搜索,我發現了幾種解決方案,其中大多數不太適合這種情況。大多數人談論繼承需要一個1-1而不是一對多的關係。但是,由於客戶產品一對多關係,該模型需要PaymentMethod和ProfilePaymentMethod之間的一對多關係。難道不可能做我想做的事嗎?

+1

鏈接,或者您發現將是很好的接近解決方案的摘要。 – Malachi 2011-06-24 19:05:54

回答

0

我這個唯一的答案至今是有一些手動創建POCO類呈現和映射器類把我的數據實體成呈現實體