LINQ to Entities 및 사용자 지정 SQL 함수
LINQ to Entities를 사용하면 개발자는 SQL과 매우 유사한 친숙한 구문을 사용하여 데이터를 쿼리할 수 있습니다. 그러나 특정 작업에는 SQL로 직접 변환할 수 없는 사용자 지정 함수가 필요할 수 있습니다. 이러한 경우 개발자는 EDMX(엔티티 데이터 모델) 파일에서 사용자 정의 함수를 정의하고 코드에서 일치 방법을 구현해야 합니다.
EDMX에서 사용자 정의 함수 정의
<Function Name="ParseDouble" ReturnType="Edm.Double"> <Parameter Name="stringvalue" Type="Edm.String" /> <DefiningExpression> cast(stringvalue as Edm.Double) </DefiningExpression> </Function>
코드에서 사용자 지정 함수 구현
EDMX 파일에서 생성된 부분 클래스에서, 다음에 정의된 사용자 정의 함수와 일치하는 메서드를 구현합니다. EDMX:
using System.Data.Objects.DataClasses; public partial class YourObjectContext { /// <summary> /// This method exists for use in LINQ queries, /// as a stub that will be converted to a SQL CAST statement. /// </summary> [EdmFunction("YourModel", "ParseDouble")] public static double ParseDouble(string stringvalue) { return Double.Parse(stringvalue); } }
LINQ에서 사용자 정의 함수 적용
LINQ 문에서 해당 함수 호출을 구현된 메서드로 바꿉니다.
model.Referring = Math.Round(_newSurveyResult.Select(m => string.IsNullOrEmpty(m.Question1) ? 0 : YourObjectContext.ParseDouble(m.Question1)).Average());
맞춤형 라운드 함수
LINQ 문에 Math.Round에 대한 호출도 포함되어 있는 경우 EDMX에서 사용자 지정 함수를 정의하세요.
<Function Name="Round" ReturnType="Edm.Double"> <Parameter Name="input" Type="Edm.Double" /> <DefiningExpression> Round(input) </DefiningExpression> </Function>
추가 고려 사항
원하는 함수가 SQL로 변환될 수 있는지 확인하려면 EDM 정식 함수 목록을 참조하는 것이 중요합니다. 함수를 변환할 수 없는 경우 저장 프로시저 구현과 같은 다른 접근 방식이 필요할 수 있습니다.
위 내용은 사용자 지정 SQL 함수를 LINQ to Entities와 통합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!