【问题标题】:second entity query is executed with errors第二个实体查询执行错误
【发布时间】: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 仍在尝试保存对第一个查询的更改)

标签: sql entity indexof


【解决方案1】:

问题的原因是我的问题中没有列出 SurroundWithTryCatchDB 程序。因为第一个查询由于唯一索引而导致异常,所有下一个 SaveChanges 都不起作用。我已将第一个查询更改为使用唯一值,现在一切正常。

【讨论】:

    猜你喜欢
    • 2020-03-09
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多