EF将entites列表添加到现有实体

时间:2017-05-02 18:06:29

标签: c# entity-framework

我在尝试向现有实体添加实体列表时遇到问题。

示例 -

我的对象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);

并未发生任何错误,但未保存或修改任何内容。

0 个答案:

没有答案