2009-05-21 4 views
1

関連する質問here長時間実行されるコンテキストを良好にサポートするORM

ほとんどのORMでは、既存のコンテキストに対してクエリを実行すると、オブジェクトが最初にデータベースから返された後に変更されたデータは返されません。クエリはDBに発行されますが、コンテキストがオブジェクトにストンプしたくないため、DBに対する変更は返されません(LinqからSQLへのこの動作の説明はhere参照)。これは、作業単位パターンを使用して短命のコンテキストでは問題ありませんが、長寿命のコンテキストを使用している場合はあまり役に立ちません。

私はLinq to SQLとEntity Frameworkを試していますが、どちらのフレームワークも、コンテキスト内の既存のオブジェクトを上書きするenum引数を指定できるようにする更新メソッドを提供していますが、クエリ)、さらに重要なことに、DBから削除されたレコードのオブジェクトは削除されません。

コンテキストと既存のオブジェクトを破棄することはできますが、オブジェクトがアプリケーション内の他の要素にバインドされているため、これを実行したくないことがわかります。

DBの最新データでオブジェクトをリフレッシュする機能、新しく作成されたオブジェクトのオブジェクトを追加する機能、理想的には効率的にDBから削除されたレコードのオブジェクトを削除する機能がありますか? MS SQLのrowversion列を使用します)。

答えて

0

チェックこのORM:あなたはサイトに持っている "http://entityorm.uuuq.com"

  • Basicの例でそれがどのように動作しますか。
  • pdfマニュアルの完全なマニュアルと例。
  • Forum;
  • サポートされているDB(ドライバを作成できるため、無制限です)。
1

わかりませんが、DataObjects.Netのような動作が必要です。それらのエンティティは、トランザクション状態でデータを格納する、長寿命のセッションバインドオブジェクトです。新しいトランザクションを開いて既存のオブジェクトの永続プロパティを読み込むと、データベースから自動的にフェッチされます(EntitySetプロパティにも関係します)。

もちろん、クエリ結果を実際の状態に保つために、トランザクションごとに複雑なクエリを実行する必要がありますが、簡単に自動化できると思います。

関連する問題