タイトルを説明しよう。
アプリケーション(TestApp)で Entity Framework Code First を使用しています。デバッグの目的で、TestAppは SQLExpress データベース (中央データベース サーバー) に接続します。
ここで物事を単純にするために、データベースには 1 つのテーブル "Products" が含まれ、TestApp はデータベースのすべての "Products" をデータグリッドに表示し、TestApp は "Product" を追加/削除したり、ProductName を変更したりできます。
public class Product {
public int ProductId { get; set; }
public string ProductName { get; set; }
}
public DbSet<Product> Products { get; set; }
たとえば、TestApp がインストールされて実行されている 3 台の PC があります (Client_X と呼びます)。Client_1 を介して新しい「製品」を追加すると、これは Client_2 と Client_3 の TestApp に直接表示されません。新しく追加されたレコードが表示されるよりも、Client_2 と Client_3 がすべてのデータを再度フェッチする (手動更新) 場合のみです。
知りたいこと: EF Code First を介してデータベースの変更を認識するにはどうすればよいですか? 新しい項目が追加または削除されたために、Client_2 と Client_3 はデータグリッドを自動的に更新するにはどうすればよいでしょうか?
質問が多すぎるかどうかはわかりませんが、これを実証するための簡単なサンプル プロジェクトまたは簡単なコードが役立つでしょう。
参考までに: 私は EF Code First の初心者です。(私は .NET 4.0 と EF Code First 4.3.1 を使用しています)
前もって感謝します。
図式:
Client_3<
\
\
\
\
\>
Client_1 <---> [Central Database] <----> Client_2
更新/編集:
わかりました。Entity Framework 自体が複数のクライアント間で同期を行わないことは明らかです。
だから私は別の質問をします: 私はクライアントサーバーの方法で作業することを考えています:
- データベースを作成し、最初に Entity Framework コードを使用する単一サーバー アプリケーション。
その単一のサーバー アプリケーションと通信する複数のクライアント。
クライアントが同じデータを使用し、お互いの更新/変更を確認するための最良の方法は何ですか? (コードサンプルをいただければ幸いです。)