関連する質問here。長時間実行されるコンテキストを良好にサポートするORM
ほとんどのORMでは、既存のコンテキストに対してクエリを実行すると、オブジェクトが最初にデータベースから返された後に変更されたデータは返されません。クエリはDBに発行されますが、コンテキストがオブジェクトにストンプしたくないため、DBに対する変更は返されません(LinqからSQLへのこの動作の説明はhere参照)。これは、作業単位パターンを使用して短命のコンテキストでは問題ありませんが、長寿命のコンテキストを使用している場合はあまり役に立ちません。
私はLinq to SQLとEntity Frameworkを試していますが、どちらのフレームワークも、コンテキスト内の既存のオブジェクトを上書きするenum引数を指定できるようにする更新メソッドを提供していますが、クエリ)、さらに重要なことに、DBから削除されたレコードのオブジェクトは削除されません。
コンテキストと既存のオブジェクトを破棄することはできますが、オブジェクトがアプリケーション内の他の要素にバインドされているため、これを実行したくないことがわかります。
DBの最新データでオブジェクトをリフレッシュする機能、新しく作成されたオブジェクトのオブジェクトを追加する機能、理想的には効率的にDBから削除されたレコードのオブジェクトを削除する機能がありますか? MS SQLのrowversion列を使用します)。