2009-10-05 17 views
11

私はEntity Frameworkを使用してアプリケーションを開発し始めました。複数のEntity Frameworkモデルを同じソリューションでサポートする方法

たとえば、ユーザー管理コードMyApp.Usersをすべて含む名前空間を追加しました。これには、名前空間の内部にマークされたモデルが含まれており、インターフェイス経由でシステムの残りの部分にのみ機能が公開されます。これはすべていいです。

これで、特定のビジネスロジックを処理する別の名前空間を定義したいと考えています。私はそれがデータベーススキーマの別のサブセットについてしか知りませんが、このサブセットはUsersテーブルに重なっているモデルを含んでいます。私はメインプロジェクトに2つ目のモデルにアクセスしようとすると、私はこのエラーを取得する:

「EdmTypeは、CLRクラスにマップすることができない複数回」

私は、これは、このように振る舞うべきではないと感じています。すべてのユーザーテーブルが2つの異なる名前空間で2つの異なるモデルによって参照された後... VSはテーブルが2回参照されていることをどのように知っていますか?

誰もがこの問題を見て、おそらく同じテーブルを別のモデルに存在させる方法を考え出しましたか?

代わりに、これは避けておかなければならない何らかの種類のEntity Frameworkアンチパターンを表していますか?

答えて

8

複数のモデル内の型を再利用するために、あなたはいくつかのspecific steps outlined in this blog postに従う必要があります。より高度なEntity Frameworkの多くの機能と同様に、これは機能しますが、GUIデザイナーとはうまく機能しません。より大きなモデルを扱うためのアイデアについては、this intro postも参照してください。

+2

ブログの投稿へのリンクが壊れています –

4

確かに複数のモデルを持つことができますが、と重複することはできません。エラーメッセージはかなり明確です。重複している場合、EFはどのCLRタイプにマップするのかを知っています。本当にそれを伝える方法はありません。

Usersテーブルを別の場所で使用する必要がある場合は、独自の第3のモデルに展開する可能性があります。

マルク・

関連する問題