Автоматически включать свойства Entity Framework - PullRequest
0 голосов
/ 22 мая 2018

ответ на мой вопрос может быть тривиальным, но я не могу понять, как это сделать.

Предположим, у нас есть следующая ситуация:

DB EF-Entityс вложенными свойствами:

public partial class Employee
{
     public int ID { get; set;}
     public virtual ICollection<EmployeeDepartmentHistory> EmployeeDepartmentHistory { get; set;}
     public virtual ICollection<JobCandidate> JobCandidate { get; set;}
}

A Класс домена Employee

(связанные классы не имеют значения для этого примера)

public class Employee
{
     public int ID { get; set;}
     public IEnumerable<Department> Departments { get; set;}
     public IEnumerable<JobCandidate> Candidates { get; set;}
}

Класс обслуживания EmployeeService который применяет бизнес-правила к запросу

public class EmployeeService
    private RepoTestEntities1 _Database;

    public EmployeeService(RepoTestEntities1 database)
    {
        _Database = database;
    }

    public IQueryable<DomainModels.Employee> GetSalariedEmployeesByDepartmentName(string departmentName)
    {
        _Database.Configuration.LazyLoadingEnabled = false;
        return _Database.Employee
            .Include(e => e.EmployeeDepartmentHistory)
            .Include(e => e.JobCandidate)
            .Include(e => e.EmployeeDepartmentHistory.Select(his => his.Department))
            .AsNoTracking()
            .WhereDepartmentName(departmentName)
            .WhereSalariedFlag(true)
            .Select(e => CreateEmployee(e));
    }
    private DomainModels.Employee CreateEmployee(Employee e)
    {
        [...] (transform to domain)
    }

WhereDepartmentName и WhereSalariedFlag реализованы как методы расширения для IQueryable<Employee>.

Теперь к вопросу


Предположим, мне нужны дополнительные методы, которые извлекают сотрудников из DbContext, и я не хочу использовать отложенную загрузку.

Повторный вызов всех этих включений является избыточным, подверженным ошибкам и утомительным.Знаете ли вы элегантный способ всегда включать необходимые свойства для всех методов EmployeeService?

Может ли стратегия быть жизнеспособным подходом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...