2013-12-15 5 views
0

엔티티 프레임 워크 6을 사용하고 있으며 "LINQ to Entities가 'System.String AsNonUnicode (System.String)'메서드를 인식하지 못합니다."예외가 있습니다. 여기 내가하는 일이있다.Entity Framework 6 및 AsNonUnicode 메서드

나는 전자 메일 열이 varchar (254) (비 유니 코드)로 정의 된 고객이 있습니다. 나는이 같은 내 쿼리를 넣어

Property(t => t.Email).IsUnicode(false); 

:

var q = context.Customers.Where(t => t.Email == "[email protected]").Select(t => t.FirstName); 

모든 것이 괜찮를, 상수는 유니 코드가 아닌 내지도에서

나는 다음 줄이있다. 그러나이 코드를 사용하면 :

string email = "[email protected]"; 
var q = context.Customers.Where(t => t.Email == email); 

변수가 생성되는 변수가 색인을 사용하지 않게됩니다.

그래서,이 설계되어야 듯 EntityFunctions.AsNonUnicode 확장, 사용하여 시도 :

string email = "[email protected]"; 
var q = context.Customers.Where(t => t.Email == EntityFunctions.AsNonUnicode(email)); 

을하지만을 나는 방법 '선택 System.String AsNonUnicode를 인식하지 못하는 실체에 대한 예외 LINQ를 얻었다 (시스템 .String) '메서드 예외가 발생했습니다.

내가 뭘 잘못하고 있니?

+0

EntityFunctions.AsNonUnicode는 EntityFramework.dll의 것이지 System.Data.Entity dll에서? 그것이 어떤 네임 스페이스인가 (System.Data.Entity.Core.Objects 여야 함)? 프로젝트에 System.Data.Entity.dll에 대한 참조가 있으면 제거해야합니다. – Pawel

+0

그게 다야, 고마워. 답으로 답장하면 나는 그 답으로 표시 할 것입니다. –

답변

2

EF6을 사용할 때 System.Data.Entity.dll에서 EntityFnctions를 사용하고 있지 않은지 확인하십시오. EF5 및 EF6은 바이너리 호환이 아니므로 EF6을 사용하는 경우 System.Data.Entity.dll에 대한 참조를 제거해야합니다. 이렇게하면 혼동을 피할 수 있습니다. 이 특별한 경우에는 System.Data.Entity.Core.Objects 네임 스페이스의 EntityFunctions를 사용하고 있는지 확인하십시오. EntityFunction 유형은 EF6에 있습니다.

관련 문제