Рассмотрим следующий простой пример:
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
... other employee properties ...
public virtual ICollection<Sale> Sales { get; set; }
}
public class Sale
{
public int Id { get; set; }
public int EmployeeId { get; set; }
public DateTime DateSold { get; set; }
... other sale properties ...
public virtual Employee Employee { get; set; }
}
public class SampleContext: DbContext
{
public DbSet<Employee> Employees { get; set; }
public DbSet<Sale> Sales { get; set; }
}
Я создаю хранилище, которое использует вышеуказанный контекст структуры сущности для возврата сотрудников с идентификатором:
public interface IRepository
{
Employee EmployeeById(int id);
}
Мой вопрос касаетсязаселение и возврат продаж сотрудникам.В подавляющем большинстве случаев использование кода, запрашивающего конкретного человека, требует продаж только за определенный день.Как мне справиться с этим? Расширить ли класс Employee до некоторого объекта EmployeeWithDailySales?
Я не могу использовать отложенную загрузку в вызывающей функции, поскольку ссылка на DbContext не существует, как только я возвращаюсь из класса репозитория.Значит ли это, что я делаю что-то неправильно с самого начала? Является ли мое представление о самом хранилище некорректным?
Я мог бы предварительно загрузить продажи сотрудника при первоначальном заполнении объекта Employee, но в большинстве случаев это могло бы привести ко многим ненужным записям.
Любой совет очень ценится.Я все еще пытаюсь получить четкое представление о том, как правильно использовать эти шаблоны и структуры.