0

我正在从事一个项目,该项目涉及从网站获取销售数据并将其存储在数据库中。我正在使用 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();
    }
}

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

4

1 回答 1

1

如果您将 Attach 与一个参数一起使用,它将假定它是脏的并且需要更新。因为:否则它怎么会知道呢?

还有另外两种附加形式:

  • 需要一个布尔值来表示干净与脏:如果您将其附加为干净,则在附加所做的更改将被适当地跟踪和提交
  • 一个需要两个实例 - 代表旧值和新值:再次,将计算差异并适当跟踪后续更改
于 2013-09-14T07:54:22.050 回答