Я хочу преобразовать данные трех таблиц в плоскую модель представления с помощью AutoMapper.
Поскольку я не мог понять, как настроить необходимую конфигурацию AutoMapper, я ценю любую информацию о том, как решить эту проблему.
public class Category {
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public virtual ICollection<BankingAccountCategory> BankingAccountCategories { get; set; }
}
public class BankingAccountCategory {
public int Id { get; set; }
public int BankingAccountId { get; set; }
public int CategoryId { get; set; }
public virtual BankingAccount BankingAccount { get; set; }
public virtual Category Category { get; set; }
public virtual ICollection<Expense> Expenses { get; set; }
}
public class Expense {
public int Id { get; set; }
public int BankingAccountCategoryId { get; set; }
public DateTime Date { get; set; }
public decimal Amount { get; set; }
public virtual BankingAccountCategory BankingAccountCategory { get; set; }
}
Моя модель просмотра:
public class CategoryViewModel {
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public int NumberOfExpenses { get; set; }
}
На стороне sql этот запрос предоставляет результат, который я хочу получить:
select cat.Id, cat.Title, cat.Description, count(ex.Id) as ExpenseCount from Category cat
inner join BankingAccountCategory bac on bac.CategoryId = cat.Id
left outer join Expense ex on ex.BankingAccountCategoryId = bac.Id
group by cat.Id, cat.Title, cat.Description
Моя конфигурация автомаппера:
CreateMap<Category, CategoryViewModel>()
.ForMember(dest => dest.NumberOfExpenses, opt => opt.MapFrom(cat =>
cat => BankingAccountCategory.Select(bac => bac.Expenses)));
Проблема в том, что NumberOfExpenses всегда равно 0 для всех записей.