假设下一个具有两个实体的数据模型场景:
商业规则
- 标识:整数
- 名称:字符串
- 规则:字符串
- 规则类型:规则类型
规则类型
- 标识:整数
- 名称:字符串
- 分组名称:字符串
该模型使用 Entity Framework 4.3 与模型优先方法和 T4 POCO 模板在 MVC 3 项目上进行映射。
现在,假设在控制器类的“Create”方法中您收到一个BusinessRule实例,但您需要根据与业务规则的RuleType关联的GroupingName属性更改行为。
获取 GroupingName 值的最佳方法是什么?
到目前为止,我一直在考虑将RuleType属性映射为预加载,但令我惊讶的是(我以前曾与 nHibernate 合作过),这似乎是不可能的。
仅查询RuleType的数据上下文的最佳方法是(按 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(据我所知)不是一种选择。我也知道这个解决方案有效,但我不确定它是否是“最好的”,所以这就是问题。如果答案是“不,没有更好的方法”,好吧,没关系。