是否有内置的方法来避免使用Entity Framework Include()的魔术字符串?

时间:2011-01-19 13:13:45

标签: .net-4.0 entity-framework-4 maintainability magic-string

  

可能重复:
  Entity Framework Include() strongly typed

好的,我有一个实体框架查询,我使用Include告诉它我想要一个相关的对象加载:

var employees = _entities.Employees.Include("Manager").ToList()

通过使用include,我避免为每个员工的经理记录生成查询(而是在查询中使用友好的JOIN,数据库再也不会受到打扰)。

但是使用魔术字符串“管理器”是令人不安的,特别是在来自所谓的更原始,快速和肮脏的Linq2SQL之后。从编码的角度来看,它就像一个加载的枪,准备抛出应该在编译时捕获的运行时异常。它也对重构起了很大的作用。

是否有任何内置的属性或方法可以解决这个问题?例如,我将Manager.EntityKeyPropertyName视为静态字符串属性,但这似乎不是我想要的。我宁愿不在某处手动添加一个硬编码的常量列表,但它会比裸智能盲目的魔法字符串更好。

1 个答案:

答案 0 :(得分:2)

在EF 4中没有任何内置的强类型Include(我认为它在EF功能CTP4和CTP5中)。我正在使用this,我很满意。