我在尝试向现有实体添加实体列表时遇到问题。
示例 -
我的对象Trade提供了一个List并选择了一个List
首次创建交易时,它包含提供的项目列表。当某些人从提供的项目中选择项目时,他们将被保存在“选定”字段中。
在我的保存中,我做了以下
internal void acceptTrade(Trade trade)
{
using(var context = new datacontext())
{
Context.Entry(Trade).State = EntityState.Modified;
Trade.Status = "Accepted";
Foreach(selected)
{
Context.entry(selected).State = EntityState.Added;
}
Context.SaveChanges();
}
}
然而,有了这个,我得到以下错误
附加类型项的实体失败,因为同一类型的另一个实体已具有相同的主键值。使用“附加”功能可能会发生这种情况。方法或将实体的状态设置为“未更改”。或者'修改'如果图中的任何实体具有冲突的键值。这可能是因为某些实体是新的并且尚未收到数据库生成的键值。在这种情况下,请使用'添加'方法或“添加”#39;实体状态跟踪图形然后设置非新的状态
我试图将每个提供的状态设置为未更改
internal void acceptTrade(Trade trade)
{
Context.Entry(Trade).State = EntityState.Modified;
Trade.Status = "Accepted";
Foreach(selected)
{
Context.entry(selected).State = EntityState.Added;
}
foreach(offered)
{
Context.Entry(offered).State = EntityState.Unchanged;
}
Context.SaveChanges();
}
我仍然得到同样的错误。
我甚至试图通过
来使用迁移 db.set<Trade>().AddorUpdate(trade);
并未发生任何错误,但未保存或修改任何内容。