我在 ASP.NET MVC4 应用程序中使用 EF5 codefirst。我有产品和合作伙伴,一个产品可以分配多个合作伙伴。
在产品实体中,我有这个: public ICollection Partners { get; 放; }
在合作伙伴实体中,我有这个: public ICollection Product { get; 放; }
因此,在我的 sql server 中,PartnerProducts many-2-many 表是由代码首先创建的。
然后我有这个动作方法:
public ActionResult AssignPartner(long productId, long partnerId) {
var product = productRepository.Find(productId);
var partner = partnerRepository.Find(partnerId);
if (product.Partners == null) {
product.Partners = new List<Partner>();
}
product.Partners.Add(partner);
productRepository.Save();
return RedirectToAction("Edit", new{ Id = productId });
}
但结果是既创建了一个新的 PartnerProducts 行(好的),又在 Partners 表中创建了一个新的合作伙伴?不知何故,EF一定认为我添加的伙伴是新记录?
我在这里想念什么?