2 つのエンティティを持つ次のデータ モデル シナリオを想定します。
ビジネスルール
- Id : 整数
- 名前:文字列
- ルール: 文字列
- ルールの種類: ルールの種類
ルールの種類
- Id : 整数
- 名前:文字列
- GroupingName : 文字列
モデルは、MVC 3 プロジェクトで、モデル ファースト アプローチと T4 POCO テンプレートを使用して Entity Framework 4.3 を使用してマップされます。
ここで、コントローラー クラスの「Create」メソッドでBusinessRuleインスタンスを受け取りますが、ビジネス ルールのRuleTypeに関連付けられたGroupingNameプロパティに応じて動作を変更する必要があるとします。
GroupingName の値を取得するための最適な方法は何ですか?
これまで、 RuleTypeプロパティを熱心な読み込みとしてマッピングするようなことを考えてきましたが、驚いたことに (以前に nHibernate で作業したことがあります)、それは不可能のようです。
RuleTypeの datacontext を( ID で)クエリするだけの最善の方法ですか、それとももっと良い方法がありますか?
編集:
私がこれまでに持っている解決策は次のようなものです:
public ActionResult Create(BusinessRule businessrule)
{
// It will be nice if I don't have to do this.
// I will be much happier if something like businessrule.RuleType.GroupingName
// would be possible
RuleType businessRuleRuleType = db.RuleType.Where(rt => rt.Id == businessrule.RuleTypeId).Single();
string businessRuleGroupingName = businessRuleRuleType.GroupingName;
}
したがって、 (私の知る限り) Includeを使用することはオプションではないことが明確になることを願っています。また、このソリューションが機能することは知っていますが、それが「最善」であるかどうかはわかりません。それが問題です。答えが「いいえ、他に方法はありません」の場合は、OK、大丈夫です。