0

Web サイトから販売データを取得して DB に保存するプロジェクトに取り組んでいます。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

1 つのパラメータで Attach を使用すると、それがダーティで更新が必要であると見なされます。理由:そうでなければどうやって知ることができますか?

アタッチには他に 2 つの形式があります。

  • クリーンかダーティかを示すブール値を取ります。クリーンとしてアタッチすると、アタッチに加えられた変更が追跡され、適切にコミットされます。
  • 1 つは 2 つのインスタンスを取り、古い値と新しい値を表します。ここでも、差が計算され、その後の変更が適切に追跡されます。
于 2013-09-14T07:54:22.050 に答える