2013-12-15 2 views
0

Я использую сущность framework 6 и имею исключение «LINQ to Entities не распознает метод« System.String AsNonUnicode (System.String) «метод». Вот что я делаю.Entity Framework 6 и метод AsNonUnicode

У меня есть таблица Клиенты с столбцом электронной почты, определенным как varchar (254) (не Unicode).

В моем картографировании У меня есть следующая строка:

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

Когда я ставлю мой запрос так:

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

все хорошо, константа не является Unicode. Однако, если я использую этот код:

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

генерируемая переменная является Unicode, что приводит к тому, что индекс не используется.

Итак, я попытался использовать расширение EntityFunctions.AsNonUnicode, которое, казалось, предназначены для этого:

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

Однако я получил LINQ исключение для лиц, не распознает метод «System.String AsNonUnicode (System .String) 'при попытке фактического запроса данных.

Что я делаю неправильно?

+0

Вы уверены, что ваш EntityFunctions.AsNonUnicode является тем же, что и EntityFramework.dll, а не тем, из dll System.Data.Entity? Какое пространство имен это (должно быть System.Data.Entity.Core.Objects)? Если у вас есть ссылка на System.Data.Entity.dll в вашем проекте, вы должны удалить его. – Pawel

+0

Вот и все, спасибо. Если вы ответите, я помечаю его как один. –

ответ

2

Убедитесь, что вы не используете EntityFnctions из System.Data.Entity.dll при использовании EF6. EF5 и EF6 не совместимы с двоичными файлами, и в идеале вы должны удалить ссылку на System.Data.Entity.dll, если вы используете EF6, чтобы избежать путаницы таких ошибок. В этом конкретном случае убедитесь, что вы используете EntityFunctions из пространства имен System.Data.Entity.Core.Objects, в котором находится тип EntityFunction, в EF6

Смежные вопросы