2014-02-12 2 views
5

데이터베이스의 SQL 함수로 Entity Framework에서 정렬 할 수 있습니까? 말은 무엇인가 :Entity Framework - SQL 함수로 정렬

var xx = DbContext.Set<Article>() 
     .Where(x=>x.Name.Contains("X")).OrderBy("[dbo].[MySQLFunction]"); 
다음
+1

이 경우 원시 쿼리를 사용해야합니다. http://stackoverflow.com/questions/18096519/entity-framework-raw-sql-query – vmeln

+2

나는 이것이 가능하지 않으며 LINQ/delta 표기법을 SQL과 혼합 할 수 없다고 확신한다. EF. SQL 함수를 C# 함수로 추가 할 수 있습니까? –

+0

페이징으로 동일한 데이터를 가져야하지만 복잡한 함수로 정렬해야합니다. 여러 복잡한 표현식으로 작성할 수는 있지만 하나의 표현식으로 병합 할 수는 없다고 생각합니다. – foxiter

답변

2
var xx = DbContext.Set<Article>() 
     .Where(x=>x.Name.Contains("X")) 
     .Select(x=> new 
     { 
      Article = x, 
      orderItem = SqlFunction.//Any function you want to use. 
            // Or may you want to use DbFunctions    
     }) 
     .OrderBy(x=>x.orderItem); 

자세한 내용은 약 DbFunctionsSqlFunctions


업데이트 : 그런데

, 당신은 사용을 의미하는 경우 귀하의 사용자 지정 SQLFunction 다음 나는 당신에게 조언 테이블에 계산 열을하고이 열이 다음 정상 Linq를 사용하여이 분야에 대한 ORDERBY 또는 필터 수이 SQLFunction를 사용할 수 있도록하는 것은 내가 찾은

+0

코드 퍼스트를 사용하므로 SQL 함수 (매개 변수 포함)를 실행하는 복잡한 계산 열 속성을 쓸 수 없습니다. – foxiter

1

유일한 옵션 쿼리 - 나쁜 해결 방법 같은 것입니다, 나는이 생각 간단한 쿼리로 제한됩니다.

+0

매우 흥미 롭습니다.하지만 매우 복잡한 쿼리와 약간 위험합니다. :) – foxiter

+0

@foxiter yeap,하지만 여전히 매우 이상합니다. 우리는 동적 인 linq 또는 그와 비슷한 것을 할 수 없습니다. – FireAlkazar