#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(). И все будет работать. И Вам правильно говорят, что падает оно не на представлении. Оно падает во время выборки (подготовки) данных.
Комментариев нет:
Отправить комментарий