0

ビジネス ロジックとコア エンティティは緊密に結合されています。

  • たとえば、Session と呼ばれるオブジェクトはデータベース エンティティですが、文字どおりの意味では、イベントが記録される実際のセッションです。
  • この Session オブジェクトには、[NotMapped] オブジェクトとアンマネージ リソースへのハンドルもあります。
  • Session オブジェクトも IDisposable を実装します。
  • 私のプロジェクトのエンティティのかなりの部分が上記の特性を持っています。

これは大惨事のように聞こえます。問題は、ここでどのようなアプローチを取るかです。

設計パターンまたはアーキテクチャを指す回答を期待していますが、提案されたソリューションの名前だけでなく、ポイントを説明するために非常に短いコード例を含めてください.

これまで考えてきたことは、各エンティティからビジネス オブジェクトとして派生させ、コード生成を使用してある型から別の型に変換することです。これはクライアント/サーバー アプリケーションであるため、派生したものではありますが、デスクトップ アプリで設定されたエンティティ関係をそのまま使用できるようにしたいと考えています。

持続可能な方法でこれを達成する方法がわからない。

4

1 に答える 1

2

これは、設計パターンではなく、使い捨てエンティティの所有権に関するものです。エンティティの所有者は誰ですか?所有者は処分に責任があります。それはあなたのコード/デザインによって直接定義されたものです。

EFコンテキスト自体は使い捨てです。Dispose操作をオーバーライドして、アタッチされているすべてのエンティティを強制的に破棄できますが、コンテキストはエンティティの所有者ではない可能性が高いため、これはおそらく実行したくないことです。コンテキストからエンティティを要求するコード、またはエンティティの永続性を要求するコードは、廃棄の責任を負う所有者と見なす必要があります。

于 2012-05-12T12:53:55.313 に答える