2013-08-07 224 views
18

我必须从数据库中选择多个列,但没有匹配的实体。 所以我的查询看起来是这样的:实体框架原始SQL查询

var result = _dbContext.Database.SqlQuery<List<string>>(
      "select ID, NAME, DB_FIELD from eis_hierarchy"); 

我得到的结果集,每一行包含字符串列表,但数为0

那么,如何选择使用Database.SqlQuery多个列?

回答

44

你必须捕获结果为一类具有匹配的属性名称,和(至少)一个参数的构造函数:

class DbResult 
{ 
    public int ID { get; set; } 
    public string NAME { get; set; } 
    public string DB_FIELD { get; set; } 
} 

var result = _dbContext.Database.SqlQuery<DbResult>(
       "select ID, NAME, DB_FIELD from eis_hierarchy"); 
+0

我发现这工作得很好 - 除了当SP结果字段都有一个名字像“未分配的空间”,这显然不能用作.NET属性名称。任何人都有一个想法在这种情况下做什么? – BCA

+2

可能使用别名:'select [unallocated space] AS unableocated_space from Table'。 –