私はデフォルトのテンプレートのテーブルを持っています。すべてのユーザーに共通です。ユーザーがカスタムテンプレートを持っていない場合は、デフォルトをプルします。ユーザーがテンプレートをカスタマイズすることを決めた場合、globaltempaltesテーブルではなくcustomtemplatesテーブルに保存する必要があります。 カスタムテーブルには、すべてのglobaltemplatesフィールドと、それが置き換えられるグローバルに関するユーザIDとIDがあります。デフォルトとエンティティフレームワークを使用したカスタム
これをもう少し詳しく説明すると、3つのテンプレートがあり、テンプレート2のみをカスタマイズしたいとします。私は通常、globaltemplatesテーブル全体と、customtemplatesテーブルのユーザに関係するものすべてを取得します。その後、クラスのプロパティに私はこのように取得して何かをしたい:
MyTemplateA
get { return customtemplates.A ?? globaltemplates.A; }
私はPOCOせずにこの使用してストレートEF4/LINQを行うことができますか? 上記のgetのようないくつかの追加のプロパティを持つ部分クラスはありますか?
私は常にcustomtemplatesテーブル(追加/編集/削除)のみを編集しているので、どのバージョンのテンプレートをプルするかは関係ありません。私はそれが挿入物か更新であるかどうか把握している毛深い得ることができると思います。
これは別の方法で解決できますか?ユーザー作成時には、グローバルテンプレートがユーザーテンプレートテーブルにコピーされます。次に、1つのオブジェクトのみを扱うことになります。より多くのオーバーヘッドが、より単純なオブジェクトです。私がここで伝えているどんなパターンもまれなケースではないと思います。 – abend
ユーザーが各テンプレートのコピーを持っていても、変更を加えたくない場合でも、それは良い方法です。 –