6

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 함수 사용"으로 대답하기 전에, 나의 예가 바로 예입니다. 다른 용도로 사용하고 싶습니다. 미리 감사드립니다.

+0

시도해 보셨습니까? 즉, Expression >을 반환하고'GetEndDate (m) <= DateTime.Now'라는 쿼리를 만듭니다. – mellamokb

+0

예, 작동하지 않습니다. "Expression >"과 "DateTime"을 비교할 수 없습니다. – Ocelot20

+0

내 대답을 시도 했습니까? – Guillaume86

답변