0

私は現在、最適な ORM として EF を使用するチームで働いています。

多くの EDMX ファイルを含む共通のプロジェクトがあります。これは、EDMX ファイルを小さく管理しやすくすると同時に、データベース上のテーブルの概念セットに集中できるようにするためです。

例えば

  • 注文.edmx
  • ユーザー.edmx
  • Trades.edmx

これらはすべて、同じデータベースの異なるテーブル セットを指しています。

ここで、ユーザー テーブルを Trade.edmxファイルに追加する必要があります。ユーザー テーブルは既に user.edmx ファイルにあるため、同じ User タイプが別の名前空間で 2 回作成されます。つまり、2 つの UserRepository オブジェクトが必要になります。

  • Common.data.trade.User
  • Common.data.users.User

同じテーブルに対して 2 つのリポジトリ オブジェクトを回避する方法はありますか?

どんな提案でも大歓迎です

4

1 に答える 1

1

POCO ジェネレーターを使用している場合は、Trades.edmx のテンプレートを更新して新しいクラスを生成しないようにし、そのコンテキスト テンプレートを名前空間Userのユーザー クラスを使用するように更新できます。UsersEF は、POCO クラスとデザイナーのエンティティをクラス名 (名前空間は省略) のみで照合するため、機能します。

欠点は、2 つのマッピング ファイルに User エンティティがあり、両方のファイルでそれを更新するか、実行時にアプリケーションが例外をスローする必要があることです。

この問題の理由はアーキテクチャにあります。最初はモデルを分離したかったのですが、異なるモデルのエンティティを結合したいと思っていました。これらは相反する要件です。Trade がナビゲーション プロパティなしでユーザー ID のみを認識する (別のデータベースで定義されている場合など) 分離モデルを使用するか、すべてのエンティティを単一の EDMX に移動して新しい要件をサポートします。

于 2012-05-29T08:18:33.317 に答える