在遗留系统中,我需要两次将相同的记录添加到表中。
表格上有一个标识,每个新记录都会增加。
如果我执行以下操作,则会收到错误消息: “无法添加已存在的实体”
有没有办法在不创建另一个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();
答案 0 :(得分:3)
创建另一个定价快照对象是“正确”的方法。这是Linq to SQL的设计方式,所以做其他任何事情都会与当前游戏相悖。
答案 1 :(得分:2)
您必须创建一个新的PricingSnapshot对象,因为在您第一次提交更改后,您的对象pricingSnapshot仍然存在,现在已经从您的表中分配了一个ID。因此,如果您在第一次提交后尝试访问该对象的ID,您会发现它有一个,因此再次将其添加到表中,将添加一个副本。