SQL로 변환 할 Linq 쿼리에서 사용할 수있는 함수를 만드는 방법을 찾고 있습니다. 우리가 Linq-to-SQL을 사용할 때, 나는 비슷한 question을 제기했다. 대답은 db의 UDF에 매핑하는 것이 었습니다. 우리는 모델 정의의 청결 함 때문에 코드 첫 번째 모델을 사용하고 있습니다.하지만 불행히도 define functions에 매핑 할 수는 없으며, 함수에 매핑하고 저장된 procs에 매핑 할 수 있습니다. (나는 그 코드가 처음이라는 생각을 추측합니다. db를 생성해야하고, 거기에 물건을 추가해서는 안됩니다.) 시간이 지남에 따라 발전 할 수있는 비효율을 다루기위한 쉬운 방법이 없기 때문에 저에게 매우 확장 할 수있는 것처럼 보이지는 않습니다. 그러나 여기 또는 그곳에 있지는 않습니다 ...EF 코드 우선 : SQL로 변환 할 수있는 메소드
어쨌든, 저는 다음과 같은 술어 표현식을 정의 할 수 있습니다. 내가 지금처럼 내 쿼리에서 사용할 수있는 SQL로 변환합니다 :
public static Expression<Func<MyEntity, bool>> FilterMe(int comparisonNumber)
{
return x => x.SomeProperty == comparisonNumber;
}
var query = MyEntities.Where(FilterMe(1));
는 bool
를 돌려 표현이 단지 수 있습니까? 나는의 라인을 따라 뭔가를 찾고 있어요 :
var query = from m in MyEntities
let endDate = GetEndDate(m.Start, m.Duration)
where endDate <= DateTime.Now
select m;
표현 기능에 GetEndDate
를 구축 할 수있는 방법이 있습니까? GetEndDate
내의 코드는 SQL로 변환됩니다. 쿼리에서 길게 쓰면 꽤 길지만 읽을 때 혼란 스럽습니다.
편집 - 오, 누군가가 "SQLAdapter 용 SQL 함수 사용"으로 대답하기 전에, 나의 예가 바로 예입니다. 다른 용도로 사용하고 싶습니다. 미리 감사드립니다.
시도해 보셨습니까? 즉, Expression>을 반환하고'GetEndDate (m) <= DateTime.Now'라는 쿼리를 만듭니다. –
mellamokb
예, 작동하지 않습니다. "Expression>"과 "DateTime"을 비교할 수 없습니다. –
Ocelot20
내 대답을 시도 했습니까? – Guillaume86