Страницы

Поиск по вопросам

среда, 12 февраля 2020 г.

Linq to Entities не распознает метод

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

Комментариев нет:

Отправить комментарий