好的,我有一个实体框架查询,我使用Include告诉它我想要一个相关的对象加载:
var employees = _entities.Employees.Include("Manager").ToList()
通过使用include,我避免为每个员工的经理记录生成查询(而是在查询中使用友好的JOIN,数据库再也不会受到打扰)。
但是使用魔术字符串“管理器”是令人不安的,特别是在来自所谓的更原始,快速和肮脏的Linq2SQL之后。从编码的角度来看,它就像一个加载的枪,准备抛出应该在编译时捕获的运行时异常。它也对重构起了很大的作用。
是否有任何内置的属性或方法可以解决这个问题?例如,我将Manager.EntityKeyPropertyName
视为静态字符串属性,但这似乎不是我想要的。我宁愿不在某处手动添加一个硬编码的常量列表,但它会比裸智能盲目的魔法字符串更好。