:LINQ는 L2E 쿼리에 저장 프로 시저를 Converting이
SELECT
SR.*,
F.*
FROM
Users AS U,
UsersToClients AS UM,
Filings AS F,
Records AS SR
LEFT OUTER JOIN RecordsMappings AS MAP ON
MAP.[MappingID] = SR.[MappingID]
WHERE
UM.[ClientID] = @clientID AND
U.[Username] LIKE UM.[Username] AND
U.[Deleted] = 0 AND
F.[Username] LIKE U.[Username] AND
SR.[FilingID] = F.[FilingID] AND
SR.[RecordType] = @recordType AND
SR.[ClientID] = @clientID AND
dbo.uf_Record_IsValuable(SR.[RecordID], 0) = 1
는 거의 정확하게에서 다음 쿼리를 무슨 일이 일어나고있다 무엇을하는 저장된 proc 디렉토리 :
var records =
from sr in context.SecuritiesRecords
from u in context.Users
from um in context.UsersToClients
from f in context.Filings
where
um.ClientID == clientID &&
String.Compare(u.Username, um.Username, true) == 0 &&
!u.Deleted &&
String.Compare(u.Username, f.Username, true) == 0 &&
sr.FilingID == f.FilingID &&
sr.RecordType == recordType &&
sr.ClientID == um.ClientID
select sr;
문제는 마지막에 발생 WHERE 조건부 논리의 무리에 따라 기록을 필터링하는 사용자 정의 함수를 호출되는 저장된 프로 시저에서 절. 나는 L2E에서 저장된 proc을 호출하기를 원하지 않았다. 왜냐하면 데이터를 필터링하기위한 where 절을 더 추가 할 것이고 저장된 proc은 LINQ 끝에있는 메모리에서 깎아 내릴 많은 레코드를 가져올 수 있기 때문이다.
내 옵션에는 어떤 것들이 있습니까?
편집 : 성공적으로 다음과 모델 정의 함수 만든
:
<DefiningExpression>
1
</DefiningExpression>
을하지만을 나는 (나는 또한에 추가 한 정의 표현에 내 UDF를 삽입 할 때 이 모델은)으로는 다음과 같습니다
<DefiningExpression>
uf_Record_IsValuable(100, 0)
</DefiningExpression>
나는 다음과 같은 오류 얻을 : 'uf_Record_IsValuable이'유효한 t으로 해결 될 수없는 예 또는 기능.
이 문서에서는 사용자 정의 함수를 호출하는 모델 정의 함수를 만드는 설명하지 않습니다. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까? – Chris
개인적으로 블로그에 정의 된 메서드를 사용하여 모든 단계를 수행했는지 확인하십시오. –
내가 말했듯이 DefiningExpression은 기사 에서처럼 간단한 SQL 문인 예제를 얻었지만 얻을 수는 없습니다 주어진 문서에서 자세히 설명하지 않은 UDF로 작업합니다. – Chris