2013-04-24 1 views
-1

Следующий код snapet сгенерирует исключение.Entity Framework исключение»указанный элемент типа не поддерживается в LINQ к объектам, только свойства

public Models.Web.User GetLogingUser(string username, string password) 
    { 
     using (Data.User_Repository repository = new Data.User_Repository()) 
     { 
     IQueryable<Models.Web.User> query = repository.FindAll().Select(x =>new    Models.Web.User()).Where(c => c.UserName.Equals(username.ToString())).AsQueryable(); 
      return query.Where(x => x.Password.Equals(password.ToString())).First(); 
     } 
    } 

здесь класс repositry имеет общий метод вставки, обновления, удаления, найти , findall и т. д. во время отладки Я обнаружил, что для введенной записи имени пользователя извлекаются, но когда он присваивает переменной «запрос», я получаю следующее исключение ошибки: добросердечно помогите мне. спасибо " Указанный член типа 'UserName' is не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, объекты сущностей и свойства навигации сущности. »

+0

пароль и имя пользователя уже являются строками, в которых вы звоните .ToString()? – Maess

+0

Какой тип c.UserName? – tschmit007

+0

вы правы. оба типа строки, нет необходимости .ToString(). Но фактические проблемы не связаны с .ToString() – user2315795

ответ

0

Его .Equals(), который является вашей проблемой. Используйте ==,, так как это будет выполнено на сервере базы данных, оно будет использовать тип сравнения случаев который настроен для вашей базы данных.

+0

Я тоже пробовал с «==», но по-прежнему ту же ошибку. – user2315795

+0

Пожалуйста, разместите код для вашей модели пользователя. – Maess

+0

Также попробуйте без него. ToStr ing() – Maess

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