C# 在context.refresh()之后,存储更新、插入或删除语句影响了意外的行数(0)

C# 在context.refresh()之后,存储更新、插入或删除语句影响了意外的行数(0),c#,entity-framework,C#,Entity Framework,我试图通过使用EF和pasing所有参数来insert,但由于某种原因,我得到的storeupdate、insert或delete语句影响了意外的行数(0)。自加载实体后,实体可能已被修改或删除。刷新ObjectStateManager条目。错误 我调查了一下,但还是发现了错误 我尝试了以下方法: foreach (var mainItemDeliveryTag in mainItemDeliveryTagList) { try { //Option-1 va

我试图通过使用EF和pasing所有参数来
insert
,但由于某种原因,我得到的
storeupdate、insert或delete语句影响了意外的行数(0)。自加载实体后,实体可能已被修改或删除。刷新ObjectStateManager条目。
错误

我调查了一下,但还是发现了错误

我尝试了以下方法:

foreach (var mainItemDeliveryTag in mainItemDeliveryTagList)
{
    try
    {   //Option-1
        var mainItemTag = DataContext.Set<MainItemDeliveryTag>();
        mainItemTag.Add(new MainItemDeliveryTag { MainItemID = mainItemId, DeliveryProviderTagID = mainItemDeliveryTag.DeliveryProviderTagID, IsDeliveryTagSelected = mainItemDeliveryTag.IsDeliveryTagSelected });

        //Option-2
        var mainItemDeliveryTagObj = new MainItemDeliveryTag()
        {
            MainItemID = mainItemId,
            DeliveryProviderTagID = mainItemDeliveryTag.DeliveryProviderTagID,
            IsDeliveryTagSelected = mainItemDeliveryTag.IsDeliveryTagSelected,
        };
        DataContext.MainItemDeliveryTag.Add(mainItemDeliveryTagObj);

        //Option-3
        DataContext.Entry(mainItemDeliveryTag).State = System.Data.Entity.EntityState.Added;

        DataContext.SaveChanges();
    }
    catch (OptimisticConcurrencyException)
    {
        var ctx = ((IObjectContextAdapter)DataContext).ObjectContext;
        ctx.Refresh(RefreshMode.ClientWins, mainItemDeliveryTag);
        DataContext.SaveChanges();
    }
}
foreach(mainItemDeliveryTagList中的var mainItemDeliveryTag)
{
尝试
{//Option-1
var mainItemTag=DataContext.Set();
添加(新的MainItemDeliveryTag{MainItemID=MainItemID,DeliveryProviderTagID=MainItemDeliveryTag.DeliveryProviderTagID,IsDeliveryTagSelected=MainItemDeliveryTag.IsDeliveryTagSelected});
//备选方案2
var mainItemDeliveryTagObj=新的MainItemDeliveryTag()
{
MainItemID=MainItemID,
DeliveryProviderTagID=mainItemDeliveryTag.DeliveryProviderTagID,
IsDeliveryTagSelected=mainItemDeliveryTag.IsDeliveryTagSelected,
};
DataContext.MainItemDeliveryTag.Add(mainItemDeliveryTagObj);
//备选方案3
条目(mainItemDeliveryTag).State=System.Data.Entity.EntityState.Added;
DataContext.SaveChanges();
}
捕获(优化并发异常)
{
var ctx=((IObjectContextAdapter)DataContext).ObjectContext;
ctx.Refresh(RefreshMode.ClientWins,mainItemDeliveryTag);
DataContext.SaveChanges();
}
}

这里缺少什么?

以前,我的表没有任何具有自动递增值的列。我添加了自动递增的新列,现在我可以插入记录了

旧表结构:

新表结构:


以前,我的表没有任何具有自动递增值的列。我添加了自动递增的新列,现在我可以插入记录了

旧表结构:

新表结构:


首先:使用选项2,但将SaveChanges()移到循环外部调用。mainItemId是什么?它是这个表的主键吗?能否告诉我们您在哪里创建DataContext?MainItemId不是主键。它只是将一些价值与id@MarcinIwanowski我的表中没有任何自动递增列,因此EF无法插入记录。我添加了一列自动递增,并运行相同的代码。它开始工作了。首先:使用Option-2,但在循环外部调用move SaveChanges()。mainItemId是什么?它是这个表的主键吗?能否告诉我们您在哪里创建DataContext?MainItemId不是主键。它只是将一些价值与id@MarcinIwanowski我的表中没有任何自动递增列,因此EF无法插入记录。我添加了一列自动递增,并运行相同的代码。它开始工作了。