实体框架自动生成的表名

时间:2011-03-19 16:33:50

标签: c# entity-framework

使用实体框架通常会编写诸如

之类的查询
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提取选项?

4 个答案:

答案 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”中创建常量,并为每个导航属性创建常量名称。

http://msdn.microsoft.com/en-us/data/gg558520