2

私はプロデューサーを使用しています-多くの消費者パターン。

データベースにはすでにレコードが配置されています。

  1. プロデューサーはレコードを読み取り、それらをスレッドセーフ キューに入れます。
  2. コンシューマ スレッドは、レコードを 1 つずつ処理し、さらにデータを追加します。
  3. プロデューサーは、コンシューマーから提供された新しいデータでデータベースのレコードを更新する必要があります。

私はEntity Frameworkを初めて使用し、これらのレコードを適切に更新するためにどのアプローチを使用すればよいかわかりません。

データベースからレコードのリストを選択し、フィールドを直接編集して、SaveChangesコンテキストオブジェクトを呼び出すだけでよいことを読みました。しかし、一部の消費者がリストからいくつかのプロパティを編集している最中になるとは思えません。

4

1 に答える 1

0

これを試して。最初の例は単一のレコードを更新する方法を示し、2 番目の例はレコードのリストで更新する方法を示しています。データ モデル内のタイプである限り、リスト内の任意のオブジェクトから必要なデータを追加または削除できます。次に、db コンテキストを呼び出して、リスト内の各オブジェクトを反復処理します。データベースを SaveChanges() で更新します。

    public List<Customer> MyCustomers { get; set; }

    public void GetCustomers()
    {
        using(var context = new SalesContext())
        {
            var customers = from b in context.Customers
                            select b;

            MyCustomers = customers.ToList<Customer>();
        }
    }

    public void MethodThatChangesCustomers()
    {

    }

    public void UpdateDatabase()
    {
        using(var context = new SalesContext())
        {
            foreach (var person in MyCustomers)
            {
                context.Customers.Add(person);
            }
            context.SaveChanges();
        }
    }
于 2013-03-10T17:05:32.193 に答える