Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t使用Linq向SQL添加记录两次_C#_Linq To Sql - Fatal编程技术网

C# Can';t使用Linq向SQL添加记录两次

C# Can';t使用Linq向SQL添加记录两次,c#,linq-to-sql,C#,Linq To Sql,在遗留系统中,我需要将相同的记录添加到表中两次 表上有一个标识,它随每个新记录而递增 如果执行以下操作,则会出现错误: “无法添加已存在的实体” 有没有一种方法可以在不创建另一个PricingSnapshot对象的情况下添加两次记录 PricingSnapshot pricingSnapshot = new PricingSnapshot { InvoiceOrderLineId = invoiceOrderLine

在遗留系统中,我需要将相同的记录添加到表中两次

表上有一个标识,它随每个新记录而递增

如果执行以下操作,则会出现错误: “无法添加已存在的实体”

有没有一种方法可以在不创建另一个PricingSnapshot对象的情况下添加两次记录

            PricingSnapshot pricingSnapshot = new PricingSnapshot
            {
                InvoiceOrderLineId = invoiceOrderLineId,
                GrossPaymentValue = grossTotal,
                CreatedBy = "Pricing Engine",
                CreatedDate = DateTime.Now
            };
            dBpostChanges.PricingSnapshots.InsertOnSubmit(pricingSnapshot);
            dBpostChanges.SubmitChanges();

        dBpostChanges.PricingSnapshots.InsertOnSubmit(pricingSnapshot);
            dBpostChanges.SubmitChanges();

创建另一个定价快照对象是“正确”的方法。这是Linq to SQL的设计方式,所以做任何其他事情都是逆流的。

创建另一个定价快照对象是“正确”的方法。这是Linq to SQL的设计方式,所以做任何其他事情都会逆流而上。

您必须创建一个新的PricingSnapshot对象,因为在您第一次提交更改后,您的对象PricingSnapshot仍然存在,并且现在已经从表中分配了一个ID。因此,如果您试图在首次提交后访问对象的ID,您会发现它有一个ID,因此再次将其添加到表中将添加一个副本。

您必须创建一个新的PricingSnapshot对象,因为在您第一次提交更改后,您的对象pricingSnapshot仍然存在,现在已从表中分配了一个ID。因此,如果您在第一次提交后尝试访问对象的ID,您会发现它有一个ID,因此再次将其添加到表中,将添加一个重复的ID。

我猜表中的一列是唯一的。您能显示您的表模式吗?我想表中有一列是唯一的。您可以显示您的表模式吗?