LINQ to Entities 오류: ToString()
지원되지 않는 메서드
MySQL 및 SQL Server와 같은 데이터베이스 간에 데이터를 마이그레이션하면 때때로 다음 LINQ to Entities 오류가 발생할 수 있습니다.
"LINQ to Entities는 'System.String ToString()' 메서드를 인식하지 못하며 이 메서드를 저장소 식으로 변환할 수 없습니다."
이는 LINQ 쿼리 내에서 ToString()
메서드를 사용하여 문자열을 데이터베이스 필드와 비교하려고 할 때 발생합니다. 문제는 ToString()
이 표준 SQL 함수가 아니며 LINQ to Entities가 이를 동등한 SQL 코드로 변환할 수 없다는 것입니다.
해결책: 임시 변수 사용
가장 간단한 해결책은 LINQ 쿼리에서 ToString()
을 사용하기 전에
<code class="language-csharp">var strItem = item.Key.ToString(); IQueryable<entity> pages = from p in context.pages where p.Serial == strItem select p;</code>
ToString()
이렇게 하면 LINQ 표현식 내에서
SqlFunctions
대안: 취업
SqlFunctions
특정 시나리오에서는 도우미 클래스가 대안을 제공합니다. LINQ to Entities가 번역할 수 있는
<code class="language-csharp">IQueryable<entity> pages = from p in context.pages where p.Serial == SqlFunctions.StringConvert(item.Key) select p;</code>
SqlFunctions.StringConvert()
ToString()
은
설명:
ToString()
핵심 문제는 LINQ to Entities가 식을 처리하는 방식에 있습니다. ToString()
을 직접 실행하지는 않습니다. 대신 전체 표현식을 SQL로 변환하려고 시도합니다.
위 내용은 LINQ to Entities에서 ''System.String ToString()' 메서드가 인식되지 않음' 예외가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!