我有一个名为“SP”的对象,指的是存储在db。
中的所有提供商的库存产品列表在我的操作中,我需要创建一个名为“PSPs”的新对象,它根据当前提供者的ID过滤SP:
Month ExpectedResult
------ ----------------
Aug15 Aug15
Nov15 Oct15
Oct15 Nov15
Sept16 Sept16
我尝试更改PSP引用的实体状态,如下所示:
Public ActionResult Edit(int id, int pid)
{
var SPs = dbContext.Products.Where(o => o.ID == id).Select(o => o.SPs).ToList();
// do something based on SPs
...
var PSPs = Filter(SPs, pid);
// edit all PSPs
但是收到了一个例外,其中包含以下消息:
附加“SP”类型的实体失败,因为该实体的另一个实体 相同类型已具有相同的主键值。
更多信息,这里是Product类中的SPs导航属性:
PSPs.ForEach(o => {
dbContext.Entry(o).State = EntityState.Modified;
}
}
和SP类:
public ICollection<SP> SPs { get; set; }
那么,任何想法?
答案 0 :(得分:0)
事实证明,SP
中有另一个ChangeTracker
实例。您需要分离另一个实例,然后才能添加新实例。
例外本身就是描述性的:您无法附加包含重复Primary Keys
的实体。