实体框架:如何从原始查询中调用实体对

时间:2015-02-23 16:53:15

标签: entity-framework entity-framework-5

例如,我有一个查询:

SELECT * FROM
persons
LEFT JOIN vehicles
ON persons.Id = vehicles.OwnerId

我想在EF数据上下文中执行此查询,并且有多个对" person-vehicle"。我该怎么做?

另一个例子:

SELECT persons.*, COUNT(vehicles.*) as cnt FROM
persons
JOIN vehicles
ON persons.Id = vehicles.OwnerId
GROUP BY vehicles.Id

在这里,我希望将一个人的字典作为一个关键字和他拥有的车辆数量作为价值。

我知道这些问题很简单,在这些情况下避免使用原始sql会更好。但我想知道原始查询处理的可能性,因为现实生活中的查询可能要复杂得多。

1 个答案:

答案 0 :(得分:0)

您可能想要对LINQ to Entities进行一些阅读。 https://msdn.microsoft.com/en-us/library/vstudio/bb386964(v=vs.100).aspx

第一个是非常基本的:

var persons = context.Persons
                     .Include(p => p.Vehicles) 
                     .ToList(); 

第二个更高级:

var persons = context.Persons
                     .Select(p => new { Person p, VehicleCount = p.Vehicles.Count() }
                     .ToList(); 

您还可以执行链接中描述的组。