У меня относительно большое приложение .NET Core. Я использую Entity Framework и AutoMapper для преобразования моих моделей баз данных в модели приложений. Для этого я использую .ProjectTo<T>()
, поэтому мне не нужно много делать .Include()
.
Я недавно модернизировал многие модели, поэтому приложение использует модели приложений вместо моделей баз данных. Есть несколько причин, но это не имеет значения. В процессе изменения примерно 30 или 40 файлов мне удалось наткнуться на ошибку, которую я пытался исправить в течение нескольких часов.
Проблема возникает из-за того, что я использую .ProjectTo<T>()
на модели, которая имеет кучу других моделей, которые также имеют много моделей. Позвольте мне сказать это так: если бы я использовал .Include()
, мне понадобилось бы по крайней мере 10 из них, чтобы получить тот же результат, что и .ProjectTo<T>()
.
Вот пример того, как я его использую:
public class CarController : Controller {
private readonly ICarContext _dbContext;
public CarController(ICarController dbContext) {
_dbContext = dbContext;
}
public async Task<CarModel> GetCar(Guid id) {
return await _dbContext
.Cars // of type Car
.Where(x => x.Id == id)
.ProjectTo<CarModel> // project from Car to CarModel
.FirstOrDefault();
}
}
Я получаю ошибку:
System.ArgumentException: типы аргументов не совпадают
AutoMapper не скажет мне точно, где моя проблема, поэтому я могу только просмотреть все 30-40 файлов и найти проблему.
Можно ли сказать AutoMapper отображать подробные ошибки, поэтому я точно знаю, где проблема преобразования из <Car>
в <CarModel>
?