本文介紹了在EF6中執行復雜的原始SQL查詢的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在使用Entity Framework6開發一個Web API。我必須執行一個復雜的SQL查詢,該查詢從多個表中獲取數據,如代碼所示。我已嘗試,但收到以下錯誤:
數據讀取器有多個字段。多個字段無效
用于EDM基元或枚舉類型。
查詢已在SSMS查詢分析器中成功返回數據。
[HttpGet]
public IHttpActionResult getJobNo(string cmpCode, string branchCode)
{
string query = string.Format(
@"select
M.S1, M.S2, C.S2 As S30, M.S3, SC.S2 As S31, M.D1, M.S5,
JT.S2 As S32, M.S6, TM.S2 As S33, M.S10
from
MERTRM M, CMF C, CMFS SC, PMCD JT, PMCD TM
where
M.S100 = 'JOB' and M.S102 = '{0}' and
M.S108 = '{1}' and
M.S101 not in('U', 'C', 'F') and
M.S2 = C.S1 and C.S102 = '{0}' and
C.S100 = 'CC' and M.S3 = SC.S1 and SC.S102 = '{0}' and
C.S1 = SC.S109 and M.S5 = JT.S1 and JT.S102 = '{0}' and
JT.S100 = 'JTP' and M.S6 = TM.S1 and TM.S102 = '{0}' and
TM.S100 = 'TPM'",
cmpCode,branchCode);
var result = db.Database.SqlQuery<string>(query);
return Json(result.ToArray());
}
由于查詢返回一個記錄列表,所以當我嘗試如下操作時:
var result = db.Database.SqlQuery<IEnumerable<string>>(query).ToList();
出現以下錯誤:
‘System.Collections.Generic.IEnumerable`1[System.String]’可能不是
抽象,并且必須包括默認構造函數。
如何執行此查詢?
問候!
推薦答案
必須使用DAO/DTO類型:
class MyDAOType {
public String S1 {get; set;}
public String S2 {get; set;}
//...
public String S10 {get; set;}
}
和查詢
var result = db.Database.SqlQuery<MyDAOType>(query);
這篇關于在EF6中執行復雜的原始SQL查詢的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,