好的。所以这里是交易。我有两个实体 - “产品”和“零件”。该产品由部件组成。而且零件可以在其他产品中重复使用。这些实体之间的关系是多对多的。这一切都很好。实体框架 - 在多对多关系中添加两次相同的实体
问题是,我不能将同一产品添加到同一产品两次。 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