无法使用Linq向SQL添加两次记录

时间:2009-12-01 16:57:46

标签: c# linq-to-sql

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

表格上有一个标识,每个新记录都会增加。

如果我执行以下操作,则会收到错误消息: “无法添加已存在的实体”

有没有办法在不创建另一个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();

2 个答案:

答案 0 :(得分:3)

创建另一个定价快照对象是“正确”的方法。这是Linq to SQL的设计方式,所以做其他任何事情都会与当前游戏相悖。

答案 1 :(得分:2)

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