Возвращение класса модели EF - PullRequest
2 голосов
/ 27 мая 2011

Я могу успешно вернуть модель из моего контроллера следующим образом:

return View(lemonadedb.Messages.ToList() );

Это отлично интерпретируется моим взглядом.

Теперь я хочу показывать только сообщения, где Messages.user == Membership.GetUser (). ToString ().

Но когда я делаю это:

return View(lemonadedb.Messages.Where( p => p.user == Membership.GetUser().ToString()).ToList());

я получаю:

'LINQ to Entities нераспознайте метод метода System.String ToString (), и этот метод не может быть преобразован в выражение хранилища. '

Мне нужен какой-то способ сузить результаты таблицы сообщений.

Должен ли я каким-то образом использовать метод find ()?Я думал, что это только для удостоверений личности.

Как мне это сделать?

1 Ответ

3 голосов
/ 27 мая 2011

Причиной возникновения этой проблемы является то, что Entity Framework пытается вычислить выражение Membership.GetUser().ToString() в запросе SQL.Вам нужно создать новую переменную, чтобы сохранить значение этого выражения и передать его в ваш запрос.Затем Entity Framework будет просто интерпретировать это так, как вы ожидаете.

Следующее должно работать:

var user = Membership.GetUser().ToString();
return View(lemonadedb.Messages.Where(p => p.user == user).ToList());

Я подозреваю, что это очень распространенная ошибка, которую допускают люди при написании запросов Entity Framework.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...