仅当数据发生更改时,LINQ2SQL-Update才会记录

时间:2013-09-14 06:39:47

标签: c# linq-to-sql orm

我正在开展一个项目,涉及从网站获取销售数据并将其存储在数据库中。我正在使用Linq-to-SQL。有没有办法只有在我获取的新数据发生变化时才更新数据库中的值?

这就是我试过的

foreach (var SalesResult in oDailySalesResult)
{
    if (SalesResult.DailySalesResultsID == 0)
    {
       Dc.DailySalesResults.InsertOnSubmit(SalesResult);
       Dc.SubmitChanges();
    }
    else
    {
       Dc.DailySalesResults.Attach(SalesResult);
       Dc.Refresh(RefreshMode.KeepCurrentValues, SalesResult);
       Dc.SubmitChanges();
    }
}

但是这只是更新记录,即使记录具有数据库中的相同数据。或者你们有其他任何解决方案吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果使用附加一个参数,它将认为它是脏的并需要更新。因为:怎么会知道呢?

还有另外两种形式的附加:

  • 一个用bool来指示clean和dirty:如果你把它附加为clean,那么在附加后做的更改将被跟踪并正确地提交
  • 一个需要两个实例 - 表示旧值和新值:这里再次计算差异并适当跟踪后续更改