Я использую сущность 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) 'при попытке фактического запроса данных.
Что я делаю неправильно?
Вы уверены, что ваш EntityFunctions.AsNonUnicode является тем же, что и EntityFramework.dll, а не тем, из dll System.Data.Entity? Какое пространство имен это (должно быть System.Data.Entity.Core.Objects)? Если у вас есть ссылка на System.Data.Entity.dll в вашем проекте, вы должны удалить его. – Pawel
Вот и все, спасибо. Если вы ответите, я помечаю его как один. –