0

Entity Framework から取得した変更されたリストをデータベースに返す最良の方法は何でしょうか。

質問 より簡単な形式で:

カスタム リスト (例: 約 100,000 レコードのリスト) をデータベースに返す方法は、オフライン スレッドセーフな方法でエンティティを修正したバージョンです。

コード :

        var query = From context.Products
                    select p;

        var listQuery = query.ToList();

編集:エンティティに添付されたすべてのリストがスレッドセーフエラーを引き起こすようです。そのため、リストのクローン バージョンを作成する必要があります。List のようなもので、編集後にすべての項目を通常の時間のかかる方法または簡略な方法で挿入する必要があり ます。アイデアはありますか?

サンプル手順:

  1. エンティティDataContextから定義済みの型のカスタム リスト配列を作成して入力します
  2. リストを反復処理します (約 100,000 項目)
  3. リストを編集する
  4. 最後にデータベースに戻します

listQuery をデータベースに渡す方法は?

それらのそれぞれを繰り返し処理し、Entity/Linq を介して同等のエンティティまたはレコードを見つけ、アイテムを変更しますか?? それは最善のアイデアでしょうか、それともこれを行うための省略形やベストプラクティスはありますか? 提案やアイデアはありますか?

4

1 に答える 1

0

まず、コード例にわずかなエラーがあります。「from context.Products」ではなく「from p in context.Products」を追加する必要があります


私が正しく理解している場合、通常、レコードのリストを編集する方法は次のとおりです。

            var products = dbContext.Products.ToList(); // Gets As List
            foreach (var product in products)
            {
                // edit the value, EF manages what is changed
                product.someField = "some new value";
            }
            dbContext.SaveChanges(); // Saves All Changes

メソッド構文を使用することを好みます。クエリ構文を使用する場合は、最初の行を次のように置き換えることができます。

var products = (from p in products
                select p).ToList();
于 2012-06-25T16:27:57.710 に答える