2

私が保守しているアプリケーションで、このLinqtoSqlコードに出くわしました。

        dbDataContext db = new dbDataContext();
        db.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues);

dbDataContextは、System.Data.Linq.DataContextを継承するクラスです。

この例では、コードはDataContext全体を更新しようとしていますが、DataContextのインスタンス化の直後に呼び出されます。これは冗長ではありませんか?

また、Refresh呼び出しは、2番目のパラメーターなしでメソッドのこのオーバーロードを呼び出しているように見えます。パラメータが指定されていないため、更新するオブジェクトはありません。では、このRefreshの呼び出しには、2番目のパラメーターがなくても目的がありますか?

4

2 に答える 2

1

db.Refresh()何も変更されていないため、作成後にUを正しく呼び出す必要はありません。

http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.refresh.aspx

于 2012-06-12T14:07:11.923 に答える
0

最後に、Telerik JustDecompile を使用して .NET コードを調べ、2 番目のパラメーターを指定せずに Refresh を呼び出すことに目的があるかどうかを確認しました。

欠落している 2 番目のパラメーターは、デフォルトで 0 アイテムの配列になります。したがって、リフレッシュ ロジックは、for..each ブロックに到達すると、早期に終了します。その後、どのアイテムも更新されません。

結論として、空の 2 番目のパラメーターを指定して Refresh メソッドを呼び出しても、DataContext 内のアイテムは更新されません。

于 2012-06-13T13:30:41.203 に答える