2013-08-07 136 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'。 –