我在这里有点问题。我已经阅读了许多 SO 线程,但没有找到答案。
我正在使用断开连接的存储库模式进行数据访问,并使用 Code First EF。
POCO:
public class LineItem
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public ICollection<LineItemCategoryMap> LineItemCategoryMaps { get; set; }
}
public class LineItemCategoryMap
{
[Key]
public int Id { get; set; }
[ForeignKey("LineItem")]
public int LineItemId { get; set; }
public LineItem LineItem { get; set; }
[ForeignKey("Category")]
public int CategoryId { get; set; }
public Category Category { get; set; }
}
数据访问代码(更新):
public void Update(LineItem lineItem)
{
using (var db = new DBContext())
{
db.LineItems.Attach(lineItem);
db.Entry(lineItem).State = EntityState.Modified;
db.SaveChanges();
}
}
如果我有一个 LineItemCategoryMap 更新工作。但是,如果有两个项目都具有相同的 LineItemID,则会出现异常“ObjectStateManager 中已存在具有相同键的对象”。被抛出。
使用多个地图对象创建 LineItem 100%
如我所见, LineItem 正在尝试多次附加。它不应该只是重用 LineItem 吗?