Отображение модели ef в dto с помощью AutoMapper, исключение выдается для типа данных DateTime - PullRequest
0 голосов
/ 18 октября 2019

Я делаю приложение Web Api + Entity Framework. Поэтому я использую AutoMapper для сопоставления класса модели EF с классом DTO.

Это конфигурация для AutoMapper. Важным является Apartment. Этот метод вызывается в Global.asx file

public class AutoMapperConfiguration
{
    public static void Configure()
    {
        Mapper.Initialize(cfg => 
        {
            cfg.CreateMap<Amenities, AmenitiesDTO>();
            cfg.CreateMap<Image, ImageDTO>();
            cfg.CreateMap<Location, LocationDTO>();
            cfg.CreateMap<Comment, CommentDTO>();
            cfg.CreateMap<Reservation, ReservationDTO>();
            cfg.CreateMap<Apartment, ApartmentDTO>();
        });
    }
}

Это проблемное свойство в ApartmentDTO классе.

public List<DateTime> FreeDate { get; set; }

Это проблемное свойство в Apartment классе.

[Column(TypeName = "datetime2")]
public List<DateTime> FreeDate { get => freeDate; set => freeDate = value; }        

Это действие контроллера, на которое я нацеливаюсь с Почтальоном.

public IQueryable<ApartmentDTO> GetApartments()
{
    var apartments = db.Apartments
        .Include(a => a.Amenities)
        .Include(a => a.Images)
        .Include(a => a.Location)
        .Include(a => a.Reservations.Select(c => c.Comment)).ProjectTo<ApartmentDTO>();


    return apartments;
}

И я получаю следующую ошибку:

The specified type member 'FreeDate' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

Так что мне нужно что-то сделать сDateTime тип данных, чтобы его можно было использовать с DTO и получить рабочий ответ в Postman. Что?

Редактировать: Я предполагаю, что эта проблема как-то связана с List<DateTime>, потому что у меня была точно такая же настройка с DateTime в ReservationsController, и она работала нормально.

...