Я использую Entity Framework 6 и Automapper для привязки объектов к dtos.Можно ли сказать automapper игнорировать отображение во время выполнения?
У меня есть эта модель
public class PersonDto
{
public int Id { get; set; }
public string Name { get; set; }
public AddressDto Address { get; set; }
}
public class AddressDto
{
public int Id { get; set; }
public string Street { get; set; }
public string City { get; set; }
}
Я использую automapper Queryable Extension для отображения DTO от объекта.
var personDto = dbContext.People.Project().To<PersonDto>();
Проблема с вышеуказанным методом заключается в том, что он заставит EF всегда загружать объект адреса. Я хочу, чтобы адрес загружался только в том случае, если я им явно указываю include (x => x.Address). Если я укажу ignore() в карте automapper, адрес не будет загружен. Можно ли сказать automapper игнорировать свойство адреса во время выполнения? Automapper запрашиваемые расширения, которые я использую, не поддерживает все функции, такие как «Условие или после карты». Есть ли обходной путь для этого?
Почему бы не создать другой PersonDto без адреса. – scottheckel
Это упрощенные модели. Мои реальные модели могут иметь более 3 таких свойств. Мне было бы больно создавать отдельную модель для каждого сценария. – Reynaldi
@Reynaldi, похоже, Queryable Extension стремится загружать объекты для вас. Я не уверен, как это будет работать, но вы можете попытаться отключить ленивую загрузку, установить свои включенные функции, а затем вызвать метод Project(). – DDiVita