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