> 백엔드 개발 > C++ > 'LINQ to Entities가 'Double.Parse' 메서드를 인식하지 못합니다.' 오류를 해결하는 방법은 무엇입니까?

'LINQ to Entities가 'Double.Parse' 메서드를 인식하지 못합니다.' 오류를 해결하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-28 22:10:11
원래의
230명이 탐색했습니다.

How to Resolve the

오류 설명: "LINQ to Entities가 'Double Parse(System.String)' 메서드를 인식하지 못하며 이 메서드를 저장소 식으로 변환할 수 없습니다."

이 오류는 Entity Framework용 데이터베이스 엔진에서 지원하지 않는 메서드가 포함된 LINQ 식을 실행하려고 할 때 발생합니다. 이 경우 오류를 일으키는 메소드는 Double.Parse(string)입니다.

문제 세부 정보

제공된 코드에서 다음 문에서 오류가 발생합니다.

model.Referring = Math.Round(_newSurveyResult.Select(m => string.IsNullOrEmpty(m.Question1) ? 0 : Double.Parse(m.Question1)).Average());
로그인 후 복사

Entity Framework는 LINQ 표현식을 SQL 쿼리로 변환하여 데이터베이스에서 실행합니다. 그러나 Double.Parse 메서드는 표준 SQL 함수가 아니며 SQL로 직접 변환할 수 없습니다.

사용자 정의 함수 정의

이 문제를 해결하려면 엔터티에서 사용자 정의 함수를 정의할 수 있습니다. 동등한 SQL 표현식으로 변환될 수 있는 프레임워크 모델입니다. 이 경우 ParseDouble이라는 함수를 정의하겠습니다.

EDMX 파일의 Entity-SQL 정의

모델에 대한 *.edmx 파일을 열고 요소. 내에 다음 함수 정의를 추가합니다. 요소:

    <Function Name="ParseDouble" ReturnType="Edm.Double">
        <Parameter Name="stringvalue" Type="Edm.String" />
        <DefiningExpression>
            cast(stringvalue as Edm.Double)
        </DefiningExpression>
    </Function>
로그인 후 복사

ObjectContext 클래스의 사용자 정의 메서드

다음으로 ObjectContext 클래스에 대한 부분 클래스를 만들고 여기에 다음 메서드를 추가합니다.

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 표현식을 업데이트하여 다음을 사용할 수 있습니다. it:

model.Referring = Math.Round(_newSurveyResult.Select(m => string.IsNullOrEmpty(m.Question1) ? 0 : YourObjectContext.ParseDouble(m.Question1)).Average());
로그인 후 복사

이제 LINQ 식이 데이터베이스 엔진에서 실행할 수 있는 SQL 쿼리로 성공적으로 변환되어야 합니다.

위 내용은 'LINQ to Entities가 'Double.Parse' 메서드를 인식하지 못합니다.' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿