2011-01-05 4 views
2

수있는 .edmx 파일의CTE SQL 쿼리 지원 <DefiningQuery>

<DefiningQuery> </DefiningQuery> 

속성에 CTE/행 번호를 사용하는 엔티티 프레임 워크 지원 SQL 쿼리?

같은 기능 사용이 게시물에서 나에게 주어진 질의에 관해서

이 : Complex/Algorithmic SQL Query

내가 SQL에서 다음의 InnerException 무엇입니까 : 오프닝 전에 세미콜론을 추가

Incorrect syntax near the keyword 'with'. 
Incorrect syntax near the keyword 'with'. If this statement is a common table ex 
pression, an xmlnamespaces clause or a change tracking context clause, the previ 
ous statement must be terminated with a semicolon. 
Incorrect syntax near ','. 
Incorrect syntax near ','. 
Incorrect syntax near ')'. 

을 'with'문으로도 문제가 해결되지 않습니다. 그것은 근처에 잘못된 구문을 말합니다 ';' 그럴 경우.

지원되지 않는 경우 복잡한 엔티티에 저장 프로 시저를 바인딩 할 수 있다고 생각하지만 다른 옵션이 있습니까?

감사합니다.

+0

CTE를 사용하려는 이유가 있습니까? 나는 이것을 결정하기 위해 모든 것을 알지는 못하지만, EF (및 전체적으로 ORM)의 요점은 특정 데이터베이스 구현에 대해 걱정할 필요가없는 곳에 데이터베이스를 추상화하는 것입니다. 즉, 나는 거기에 EF가 CTE를 필요로 할 수도 있다는 것을 네이티브 처리하지 않을 것이라는 확신이 있습니다.이 경우, 당신이 제안하고 EF가 스토어드 프로 시저를 호출하도록 할 것입니다 (가정 할 수 있음) . –

+0

다소 호기심에서 벗어났습니다. 엔티티 프레임 워크의 DefiningQuery 기능을 사용하여 여러 테이블의 데이터를 결합하는 사용자 정의 엔티티가 있습니다. 또한 데이터베이스의 로그인 및 로그 아웃 항목에서 사용자 세션 길이를 계산할 때 사용하는 간단한 알고리즘입니다. 또 다른 포스터는 저에게 알고리즘을 모두 자체적으로 수행하는 매우 복잡한 SQL 쿼리를 제공했습니다. 정의 쿼리로 사용하는 사용자 지정 EntityType을 만든 경우이 세션에 대해 데이터베이스를 쿼리하면됩니다. – sean

+0

[대답은?] (http://stackoverflow.com/questions/4598405/complex-algorithmic-sql-query/4599163#4599163)보기로 모든 것을 돌릴 수 있습니다. 예 : 'CREATE VIEW로 이벤트를 볼 수 있습니다 ... 그리고 i.row = o.row' 그러면 모든 것이 더 쉬워 집니까? –

답변

0

이 게시물은 CTE가 재귀 적이거나 비 재귀 적이는 여부를 지정하지 않습니다. 데이터베이스를 추상화하려는 욕구 (즉, EF를 ORM으로 사용)를 능가하는 재귀 적 CTE를 사용하는 것이 바람직한 성능상의 이유가 될 수 있습니다.

Entity Framework 4에는 위의 Martin이보기를 사용하여 해결할 수있는 해결 방법이 있습니다. Matthieu Mezil (http://msmvps.com/blogs/matthieu/archive/2010/06/16/how-to-include-recursion-table-valued-functions-in-linq-to-entities-queries-with-ef4.aspx) 의이 블로그 게시물에는이를 수행하는 방법에 대한 훌륭한 정보가 있습니다.