我在直接SQL查询中做错了什么?

时间:2015-08-19 19:38:34

标签: c# entity-framework

我的观点模型:

public class LocationsWithHierarchyViewModel
{
    public long Id { get; set; }
    public string Name { get; set; }
    public string Lineage { get; set; }
}

我的查询(在SQL中测试,有效):

        string cmd = string.Format(@"
            SELECT Locations.Id, Locations.Name, LocationHierarchy.Lineage
            FROM Locations
            LEFT JOIN LocationHierarchy
            ON Locations.Id = LocationHierarchy.Id
            WHERE OfficeId = {0}; 
            ", 1);

我确信代码的一部分会导致问题:

var locationsInOffice = db.Database.SqlQuery(cmd).ToList<LocationsWithHierarchyViewModel>();

错误是我必须指定数据的返回类型,即List。怎么办?

P.S。 - &#34; db&#34;是我们的数据库上下文,我不能将它与普通的EF查询一起使用,因为我们没有为LocationHierarchy表建立模型,长篇大论。

  

方法的类型参数   &#39; System.Data.Entity.Database.SqlQuery(字符串,   parmsobject [] _&#39;无法从使用中推断出来。尝试指定类型   明确的论点。

1 个答案:

答案 0 :(得分:3)

如错误消息所示:明确指定类型参数。

db.Database.SqlQuery<LocationsWithHierarchyViewModel>(cmd).ToList()