2013-01-21 56 views
0

如何使用原生查詢與DBContext?如果我運行代碼,這給我例外。爲什麼以及在使用DBContext時如何運行本機查詢?DBContext原生SQL查詢

AcademyEntities context = new AcademyEntities(); 

      string nativeSQLQuery = 
       "SELECT * " + 
       "FROM dbo.Employees " + 
       "WHERE FirstName='{0}'"; 

      string name = "Guy"; 

      var emp = context.Departments.SqlQuery(nativeSQLQuery, name); 

      foreach (var item in emp) 
      { 

      } 
+1

嘗試刪除圍繞{0}的報價 –

+0

有什麼特殊情況? –

+0

例外情況是「數據讀取器與指定的'TelerikAcademyModel.Department'不兼容,類型'Name'的成員在數據讀取器中沒有相應的列,名稱相同。 – TheChampp

回答

1

你查詢Employees表,而是試圖兌現Department對象。

更改您的通話:

var emp = context.Employees.SqlQuery(nativeSQLQuery, name); 

(和刪除引號輪{0}

+0

它工作了,謝謝。我還有一個問題。使用EF5「AcademyEntities」繼承DBContext。在EF(4.0)的先前版本中,「AcademyEntities」繼承ObjectContext。爲什麼在EF5.0中「AcademyEntities」interit DBContext?好點嗎 ?有什麼不同 ? – TheChampp

+0

@ user1749358優秀的:)'DbContext'在EF 4.1中引入 - 大多數人現在使用它。 –

+0

這是一個很好的實踐,以這種方式使用本機SQL查詢? – TheChampp

1

您要查詢的員工,所以你應該使用context.Employees:

var emp = context.Employees.SqlQuery(nativeSQLQuery, name);