使用实体框架通常会编写诸如
之类的查询var orders = from o in context.Orders.Include("Customer")
where o.OrderDate.HasValue && o.OrderDate.Value.Year == 1997
orderby o.Freight
select o;
真正让我胃部流失的是"Customer"
字符串参数。我很难相信EF不会在某处生成表名作为常量。有没有人知道比使用字符串更好的方法?对于Include
提取选项?
答案 0 :(得分:6)
EF 4.1具有强类型的Include版本,可用于IQueryable,ObjectQuery和DbQuery。添加对EntityFramework.dll(EF 4.1)的引用后,可以使用System.Data.Entity添加并使用带有lambda表达式的预先加载
// get Orders with related Customers
var orders = from o in context.Orders.Include(o => o.Customer) ...
编辑:
如果您不想使用EF 4.1,请检查this article。我已经在我的项目中使用过,我很高兴。
答案 1 :(得分:1)
除了存储所有定义的.edmx文件外,IMO GetType可能会帮助您,
context.Orders.Include(CustomerEntity.GetType.Name or full name )
答案 2 :(得分:1)
怎么样
Include(context.Customers.EntitySet.Name)
答案 3 :(得分:1)
您可以创建一个文本模板,除了EF的默认代码之外,还可以生成代码。您可以通过右键单击并单击“添加代码生成项”来执行此操作。
在此文本模板中,您可以根据需要在“CustomerProperties”中创建常量,并为每个导航属性创建常量名称。