好的。所以這裏是交易。我有兩個實體 - 「產品」和「零件」。該產品由部件組成。而且零件可以在其他產品中重複使用。這些實體之間的關係是多對多的。這一切都很好。實體框架 - 在多對多關係中添加兩次相同的實體
問題是,我不能將同一產品添加到同一產品兩次。 EF似乎強制所有相關實體都是唯一的。考慮下面的代碼:
var product = context.Create<Product>();
var part = GetSomePart();
Console.WriteLine(product.Parts.Count); // will output 0
// Add a part
product.Parts.Add(part);
Console.WriteLine(product.Parts.Count); // will output 1
// Add the same part again
product.Parts.Add(part);
Console.WriteLine(product.Parts.Count); // will output 1!
所以好吧,我明白了 - 避免重複或其他。但我需要這是可能的。有沒有辦法做到這一點(告訴EF停止強制執行唯一值)而不創建額外的表?或者解決這個問題的唯一方法是手動添加中間表並處理多對多的自己?
是的,我想我必須走這條路,除非別人來了一個原生EF解決方案(我懷疑)。 – Jefim
這是唯一可能的方式,因爲在很多情況下,您的兩把鑰匙都會形成唯一的鑰匙,並且無論如何您都無法將其添加到數據庫中。您的組合在許多情況下都是獨一無二的,只有ID是主鍵。 –
Jep,我只是想,如果我能告訴EF添加這個代理鍵本身。但我想這是不可能的。感謝您的解釋 - 標記答案已被接受。 – Jefim