深入理解LINQ查询与数据库视图的使用
1. 映射SQL到非实体类的问题及解决
在尝试将SQL查询结果映射到非实体类时,会遇到一些问题。例如,以下代码尝试执行一个分组查询并将结果映射到 DepartureGroup
类:
{
// Map SQL to non-entity class
Console.WriteLine(ctx.Database.GetType().FullName);
ctx.Log();
var sql = "SELECT Departure, COUNT(FlightNo) AS FlightCount FROM Flight GROUP BY Departure";
// ERROR!!! Cannot create a DbSet for 'Group' because this type is not included in the model for the context."
var groupSet = ctx.Set<DepartureGroup>().FromSql(sql);
// Output
foreach (var g in groupSet)
{
Console.WriteLine(g.Departure + ": " + g.FlightCount);
}
}
但会出现错误,提示无法为 DepartureGroup
创建 DbSet
,因为该类型未包含在上