[英]Complex Relationship Mapping using Entity Framework
我有這個數據庫
Packages (packageID, package_name , .... )
PackageVariant (packageID, variantID)
Variant (variantID, variant_name, .... )
VariantProduct (variantID, productID, quantity)
Product (productID, product_name, .... )
我已經在實體框架中對其建模,我不知道多重性,但是它們應該基於以下內容:
套件可以沒有或具有多個變體
變體只能與一個包關聯(不能是一個或多個)
一個變體可以具有一個或多個產品
產品與無或多個變體相關
刪除軟件包時,必須刪除該軟件包的所有變體。
刪除變體后,無需刪除其他任何內容。
刪除產品后,所有與變體的關聯都需要刪除。
如果您可以提供有關多重性的幫助以及需要在哪里設置OnDelete:Cascade的地方,那就太好了!
我還需要能夠做到這一點:
var ptx = new MyEntities();
Variant newVariant = new Variant()
{
setRelevantProperty = value
};
Product selectedProduct = ptx.Products.First(o => o.productID == productID);
newVariant.Products.Add(selectedProduct);
Package packageToAddVariantTo = ptx.Packages.First(o => o.packageID == packageID);
packageToAddVariantTo.Variants.Add(newVariant);
ptx.SaveChanges();
不會由於“沒有插入,更新集”或任何其他依賴於映射的錯誤而出錯。 因此,如何正確映射此復雜數據庫將是一個好方法:)
我已經閱讀了一些帖子,書籍,但似乎找不到答案。
謝謝
Lee O得到了答案,為了方便讀者閱讀,我將其重新發布為答案,而不是發表評論:
我不確定您的問題的答案,但我會提出1條建議,擺脫PackageVariant表。 當您具有多對多關系時,只需要一個這樣的表。 只需在變量表中添加一列稱為packageId並將其作為包表的外鍵即可,而不是null。 這將嚴格執行每個變體1個軟件包的規則。 但是每個軟件包都沒有多個變體。
謝謝李
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.