【发布时间】:2017-12-01 03:36:06
【问题描述】:
我有 2 个 linq 查询。由于唯一索引,第一个查询什么也不做,这没关系。但是 second 在它应该添加记录时也什么都不做。如果我绕过第一个查询,第二个查询有效。我应该刷新实体吗?怎么样?
foreach (var product in productList)
{
cc2nexo_SubiektProduct newproduct = new cc2nexo_SubiektProduct();
newproduct.Name = product.Name;
newproduct.VAT = product.VAT;
newproduct.Id = product.Id;
foreach (var stawkaVAT in myNexo_ExitoEntities.StawkiVat)
{
if (stawkaVAT.Stawka * 100 == tryconvert_dec(newproduct.VAT))
{
newproduct.VAT_Id = stawkaVAT.Id;
}
}
myNexo_ExitoEntities.cc2nexo_SubiektProduct.Add(newproduct);
SurroundWithTryCatchDB(() =>
{
myNexo_ExitoEntities.SaveChanges();
});
}
var orders = (from myorders in myNexo_ExitoEntities.temp_SubiektOrderList
select myorders).ToList();
foreach (var order in orders)
{
cc2nexo_SubiektOrderList neworder = new cc2nexo_SubiektOrderList();
neworder.Data_utworzenia_sprawy = tryconvert_date(order.Data_utworzenia_sprawy);
neworder.Data_modyfikacji_sprawy = tryconvert_date(order.Data_modyfikacji_sprawy);
neworder.Data_umowy = tryconvert_date(order.Data_umowy);
neworder.Id = order.Id;
myNexo_ExitoEntities.cc2nexo_SubiektOrderList.Add(neworder);
SurroundWithTryCatchDB(() =>
{
myNexo_ExitoEntities.SaveChanges();
});
Debug.WriteLine(neworder.LastName);
}
我收到一个错误
无法在具有唯一索引“K_ID”的对象“dbo.cc2nexo_SubiektProduct”中插入重复的键行。重复键值为(1)。语句已终止
【问题讨论】:
-
错误信息表明存在重复的键值。这个值在哪里确定?您如何确保每一行都有唯一的键?
-
如果我只运行第二个查询,新行将添加到 cc2nexo_SubiektOrderList ,如果我同时运行两个查询,第一个查询将不会将行添加到 productList (这是可以的,因为 K_ID 索引)但第二个查询不会添加行(看起来 SaveChanges 仍在尝试保存对第一个查询的更改)