DbUpdateException违反Unique Key

时间:2017-10-12 13:37:42

标签: c# sql-server model-view-controller

我有一个编辑网格中记录的函数,此网格中的数据从我的数据库中检索,只有1列可编辑。当尝试根据编辑的记录在我的数据库中编辑此记录时,我收到一个错误,即我违反了唯一键。可编辑的列不是唯一的也不是键,BinLocation_Item item的值与数据库的值匹配。

编辑:我的应用程序似乎试图使用导致此问题的WHERE BatchId = null而不是WHERE BatchId IS NULL来删除行。

错误:

  

System.Data.Entity.Infrastructure.DbUpdateException:'更新条目时发生错误。有关详细信息,请参阅内部异常。'

     

SqlException:违反UNIQUE KEY约束'UC_BIB'。无法在对象'dbo.BinLocation_Item'中插入重复键。重复键值为(3,9642,NULL)。

代码:

public ActionResult submitLocItem(BinLocationItemModel lines, int? PID, int? LineNum)
{
  dbEntity.Configuration.ProxyCreationEnabled = false;      
  BinLocation_Item item = dbEntity.BinLocation_Item.Where(i => i.BinLocationId == lines.BinLocationId && i.ItemId == lines.ItemId && i.BatchId == lines.BatchID).FirstOrDefault();
  PickListLine picklistline = dbEntity.PickListLine.Where(i => i.PickID == PID && i.LineNum == LineNum).FirstOrDefault();

  picklistline.PickedQuantity = picklistline.PickedQuantity + lines.PickedStock;

  item.StockAvailable = lines.StockAvailable - lines.PickedStock;
  dbEntity.Entry(item).State = System.Data.Entity.EntityState.Modified;
  dbEntity.SaveChanges();

  return View();
}

1 个答案:

答案 0 :(得分:0)

将我的代码更改为此功能,首先删除条目,然后在值为null时添加它。

library(bife)
bife(same_team ~ length_pass + year + mean_length_pass_team | team, data=data)

library(survival)
clogit(same_team ~ length_pass + year + mean_length_pass_team + strata(team), data=data)