2013-01-21 2 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} 둥근 따옴표 제거) 당신이 context.Employees를 사용한다, 그래서 당신은 종업원 수를 쿼리하는

+0

일했습니다. 고마워요. 한가지 더 질문이 있습니다. EF5에서는 "AcademyEntities"가 DBContext를 상속합니다. 이전 버전의 EF (4.0)에서는 "AcademyEntities"가 ObjectContext를 상속합니다. EF5.0에서 "AcademyEntities"가 DBContext를 개입하는 이유는 무엇입니까? 더 낫니? 그 차이점은 무엇입니까? – TheChampp

+0

@ user1749358 excellent :)'DbContext'는 EF 4.1에 소개되었습니다. - 대부분의 사람들이 그것을 사용합니다. –

+0

이 방법으로 원시 SQL 쿼리를 사용하는 것이 좋습니다. – TheChampp

1

을 :

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