未找到或更改Linq To Sql Row

时间:2018-02-23 09:10:55

标签: c# .net linq-to-sql

我有以下代码,实际上非常简单:

   foreach (var pr in b.Receipes)
   {
       var br = prod.Where(o => o.ProductID == pr.ProductID).FirstOrDefault();
       string entity = "piece";
       if (pr.SelectedEntity != null)
           entity = pr.SelectedEntity.Type;
       if (br != null)
       {
           br.TotalQuantity = br.TotalQuantity - b.Amount * pr.QuantityUsage;
           br.Amount = (Int32)(br.TotalQuantity / br.UnitQuantity);
       }
       dc.SRAddInvoiceDetailsConsumable(inv.InvoiceID, pr.ProductID, entity, pr.QuantityUsage, b.Amount);
       dc.SubmitChanges();
   }

所以我执行这个存储过程,它在带有for循环的表中插入记录,在第二个循环中,我得到错误行未找到或更改。

表结构如下:

[Id] INT IDENTITY NOT NULL PRIMARY KEY,
[InvoiceID] INT NOT NULL,
[ProductID] INT NOT NULL,
[Entity] NVARCHAR(300) NULL,
[QuantityUsage] float NOT NULL,
[Amount] int NOT NULL

存储过程:

 CREATE PROCEDURE [dbo].[SRAddInvoiceDetailsConsumable]
    @InvoiceID INT,
    @ProductID INT,
    @Entity NVARCHAR(300),
    @QuantityUsage float,
    @Amount INT
AS
BEGIN
    INSERT INTO SRInvoiceDetailsConsumables
    (InvoiceID, ProductID, Entity, QuantityUsage, Amount)
    VALUES
    (@InvoiceID, @ProductID, @Entity, @QuantityUsage, @Amount)
END

在之前发布的错误帖子之后,对我没有用的东西。

1. dbml结构与表格完全相同。

2.我用服务器表替换dbml以重新生成dbml。

3.在表的dbml属性中,我将属性“Update check”设置为never。

我将实际值传递给存储过程,但没有无效值。

我的想法已经用完,任何帮助都会很棒!

BIG EDIT:

我找到了一个有效的解决方案。

 if (br != null)
 {
     br.TotalQuantity = br.TotalQuantity - b.Amount * pr.QuantityUsage;
     br.Amount = (Int32)(br.TotalQuantity / br.UnitQuantity);
     dc.Refresh(System.Data.Linq.RefreshMode.KeepChanges, br);
 }

问题不在我最初想的存储过程中。

0 个答案:

没有答案