#c_sharp #entity_framework
когда я пытаюсь запустить public static DalUser ToDalUser(this User ormUser) { return new DalUser() { Id = ormUser.Id, FirstName = ormUser.FirstName, LastName = ormUser.LastName, About = ormUser.About, Email = ormUser.Email, Password = ormUser.Password, Roles = ormUser.Roles.Select(role => role.ToDalRole()) }; } выскакивает ошибка Additional information: LINQ to Entities does not recognize the method 'DAL.Interface.DTO.DalUser ToDalUser(ORM.User)' method, and this method cannot be translated into a store expression. во вьюхе @foreach (var item in Model) {} что не так? помогите, пожалуйста. уже весь интернет обрыскал - не нашел решения @Html.DisplayFor(modelItem => item.FirstName) @Html.DisplayFor(modelItem => item.LastName) @Html.DisplayFor(modelItem => item.Email) @Html.DisplayFor(modelItem => item.About) @Html.DisplayTextFor(modelItem => item.Role)
Ответы
Ответ 1
LINQ to Entities - не поддерживает вызов пользовательских методов внутри себя, так как не может преобразовать запрос к фактической инструкции для исполнения. Иными словами Вам необходимо сначала получить данные, выгрузить их в память, к примеру вызвать ToList() или ToArray() ну или AsEnumerable(),а затем уже применить Ваш метод ToDalUser для полученных данных, к примеру через .Select(x => ...ToDalUser...).ToList(). И все будет работать. И Вам правильно говорят, что падает оно не на представлении. Оно падает во время выборки (подготовки) данных.
Комментариев нет:
Отправить комментарий