2012-10-02 1 views
1

내 응용 프로그램에서 SqlDependency 서비스를 만들었습니다. 필자가 직접 쿼리를 입력하면 완벽하게 작동하지만 와일드 카드를 포함 할 수 없습니다 (실제로 이유를 모르겠습니다). 예를 들어EF로 SqlCommand 가져 오기

:

//Using this SqlCommand will work 
new SqlCommand("SELECT [employees].[name] FROM [dbo].[employees]", sqlNotificationConn) 

//But this one won't 
new SqlCommand("SELECT [employees].* FROM [dbo].[employees]", sqlNotificationConn) 

//And this one won't either 
new SqlCommand("SELECT * FROM [dbo].[employees]", sqlNotificationConn) 

그래서 기본적으로, 나는 그것이 다루는 모든 필드 전체 SELECT 명령을 생성하는 내 DbContext을 싶어.

, 내가

dbContext.employee.ToTraceString();을 사용하지만 EF 4.4에서, 내가 생성하기 위해 아무것도 찾을 수없는 (? 또는 4.1이었다) 2 SQL, 나는 EF 4.0 dbContext.GetCommand(.....);

를 사용하여이 서비스를 사용 Linq에에서

그 SELECT 쿼리 문자열 ....

답변

2

만큼이나 간단 각각 ObjectSet). 따라서 dbContext.employee.Where(e => e.Name == "Gates").ToString()과 같이 생성 된 SQL 쿼리도 표시됩니다.

강제 실행 등 ToList(), Single(), FirstOrDefault()처럼, 새로운 객체를 생성하고 ToString()이 개체의 형식 이름을 반환하는 LINQ 문.

+0

너무 간단 ... 고마워! (추신 : 그것은 코드 첫 번째뿐만 아니라. 나는 데이터베이스 - 먼저 사용하고 그것을 작동합니다) – Pluc

+0

그럼 : _dbContext.Stuffs.FirstOrDefault (s => s.Key == "MyKey"); 어떻게 그 질문을받을 수 있습니까? – zaitsman

+0

@zaitsman 나는 작은 추가했다. –

0

ToTraceString() 아직 EF에, 그것은 항상 같은 장소에 있습니다. 그러나 ObjectQuery에 있으며 DbQuery이 아닙니다. 그런 말로, EF 용 SQL Server 공급자는 한번도 보지 못했습니다. *; 그것은 항상 SQL에서 개별 필드를 사용합니다.

query.ToString() 

(ObjectQuery) ObjectContext 함께 : 그런데

((ObjectQuery)query).ToTraceString() 

, queryDbSet에 기초한 표현 될 (또는 수 DbContext (DbQuery)를

+0

그럼 어떻게 EF4.4 컨텍스트에서 사용할 수 있습니까? – Pluc