C# 在context.refresh()之后,存储更新、插入或删除语句影响了意外的行数(0)
我试图通过使用EF和pasing所有参数来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
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无法插入记录。我添加了一列自动递增,并运行相同的代码。它开始工作了。