2

通常、モデルクラスを記述し、対応するモデルクラスに複数のDbSetを含むDbContextを作成してEFコードでデータベースを作成します。エンティティフレームワークのコード最初に他のプロジェクトからモデルを追加する

Prismライブラリを使用すると、モジュールを作成できます。モジュールはソリューション内に同じソリューションに存在しますが、ソリューション内の別のプロジェクトとして存在します。あるいは、別のソリューションのDLLである可能性もあります。

私の質問は今、あなた自身のモデル(とDbSet定義)を持つプリズムモジュール(分離されたプロジェクト)を持っていればどうでしょうか? これらのモデルクラスとDbSetをそのモジュールから追加または注入(またはEFで検出)し、それらを既存のEFデータベースに追加するにはどうすればよいですか?

外部の人が独自のデータベースモデルを持つプラグイン(プリズムモジュール)を作成し、対応するDbSet定義をオフコイスするとします。 その人がそのプリズムモジュールDLLをプログラムディレクトリに落とした場合、プリズムモジュールからの他のDbSetが存在していてもデータベースに作成する必要がある。 (どのように追加できますか?)

ありがとうございます。

誰かがこれを行う方法のコードサンプルを与えることができますか?私はMEFの属性[ImportMany]と[ExportMany]について考えていましたが、うまくいくかどうかわかりません。

答えて

0

私は最近、この問題を抱え、満足のいく解決策を見つけられませんでした。

特に、RIAサービスを使用する場合、Visual Studioでコードを生成できるように、すべてのクラスをコンパイル時に準備する必要があります。そのために見つけた唯一の解決策は継承でしたが、効率的であるためにはるかに多くの問題が発生するため、そのアイデアを放棄しました。抽象クラスを使用しない場合、RIAサービスは継承構造体も複製します。しかし、必要なすべてのエンティティ(たとえば、メインモジュールのCustomerBase - > Customer:CustomerBaseのCustomerBase)に基本クラスが必要です。

(詳細:外部キーが必要な場合は、BillingModuleのCustomerなどで他のクラスのアイデアが必要です)。

継承方法が気に入らない場合は、部分クラスを使用してクライアントで手動で実装するインタフェースを定義することができます(後でこのインタフェースをリポジトリに公開するだけです)。私はそれに固執し、今はとても幸せです。それでも今私はティをしたいと思った。

+0

hmmmm実際に私の質問はEFコードでは最初にできないと言っていますか? – juFo

+0

はい...回避策はかなり面倒です。 – LueTm

関連する問題