У меня возникли проблемы с отображением атрибута внешней таблицы в моем DTO. Я нанес на карту источника таблицу BOOK
, которая имеет свойство навигации от AUTHOR
к месту назначения DTO BookDTO
но когда я выполнить запрос я получаю только записи из BOOK
таблицы.Automapper - Отсутствует атрибут внешней таблицы
Автор:
public int Id { get; set; }
[Required]
public string Name { get; set; }
Книга:
public int Id { get; set; }
[Required]
public string Title { get; set; }
public int Year { get; set; }
public decimal Price { get; set; }
public string Genre { get; set; }
// Foreign Key
public int AuthorId { get; set; }
// Navigation property
public Author Author { get; set; }
BookDTO:
public int Id { get; set; }
public string Title { get; set; }
public string AuthorName { get; set; }
Mapping:
Mapper.CreateMap<Book, BookDTO>()
.ForMember(dest => dest.AuthorName,
opts => opts.MapFrom(src => src.Author.Name)
);
Запрос:
var books = Mapper.Map<IEnumerable<BookDTO>>(db.Books).ToList().AsQueryable();
return books;
запроса генерируется:
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Title] AS [Title],
[Extent1].[Year] AS [Year],
[Extent1].[Price] AS [Price],
[Extent1].[Genre] AS [Genre],
[Extent1].[AuthorId] AS [AuthorId]
FROM
[dbo].[Books] AS [Extent1]
почему этот запрос не требует включения? из Ь в db.Books выбрать новый BookDTO() { Id = b.Id, Заголовок = b.Title, AUTHORNAME = b.Author.Name }; – YOusaFZai
Это означает, что я должен включать каждое свойство навигации в запрос по Eager Loading? – YOusaFZai