0

コア製品をカスタマイズし、クライアントごとにフィールドを追加できるようにする必要があります。たとえば、一部のクライアントがお気に入りの色を記録したい People エンティティなどです。私の知る限り、必要に応じて実行時に EF にプロパティを追加することはできません。起動時に定義されたクラス。各顧客は独自のデータベースを持っていますが、すべての追加コードを使用してすべての顧客に同じソリューションを展開しています。次に、彼らがどの顧客であるかを検出し、顧客固有のサービスなどを実行しています.

今、私が望んでいる最後のことは、自分のプロジェクトをフォークしたり、代わりにすべてのクライアントのすべてのフィールドを追加したりすることです. これは悪夢になりそうです。また、多くの場合、追加のフィールドは非常に限られた場所でのみ必要になります。たぶん、いくつかのレポート、いくつかの画面など.

Jermey Miller からこの記事を見つけましたhttp://codebetter.com/jeremymiller/2010/02/16/our-extension-properties-story/拡張プロパティを追加し、それらをドメインから Web フロントエンドに移動させる方法について説明しています。

EFを使用して同様のことを実装した人はいますか? それはどのようにうまくいきましたか?誰かが見たブログ/サンプルはありますか? 誰かが私たちがやりたいことの一般的な名前を教えてくれたとしても、私が正しいことを探しているかどうかはわかりません。他の人に出てくる問題だと思います。

4

1 に答える 1

1

リンクされた質問には、まだ強く型付けされた拡張機能を事前に作成しているため (= 顧客が必要とする拡張機能を事前に知っているため)、単一のソリューションで可能なすべての拡張機能を分岐または実装する必要があります。一般に、拡張可能なソリューションではありません。一般的な拡張可能なソリューションが必要な場合は、厳密に型指定された世界を離れ、拡張機能をデータとして記述する必要があります。

いくつかのメタモデルを使用する必要があります。エンティティ クラスには、すべての顧客によって使用されるプロパティのみが含まれ、特別な拡張エンティティ (拡張可能なエンティティごとに追加のテーブル) へのナビゲーション プロパティが含まれ、追加のプロパティを名前/値のペアとして配置できます (タイプ、検証などの他の列を追加できます)。 、必要に応じて)。

これにより、通常、モデルの一部がハードコードされたシナリオから構成ベースのシナリオに移動し、顧客は実行時に拡張機能を定義することもできます (そのような機能を実装する場合)。

于 2012-08-29T12:39:47.740 に答える