Другими словами, он считает, что изменение в отделе может привести к изменению сотрудника или сотрудника, ссылающегося на отдел, поэтому он загружает все на всякий случай.

ный (Вероятно, не странно, вообще)

У меня есть 3 объекта, сотрудник, рота и отдел.

public class Employee
{
    public int Id { get; set; }
    public String Name { get; set; }
    public virtual Department Department { get; set; }
}

internal class EmployeeMapping : EntityTypeConfiguration<Employee>
{
    public EmployeeMapping()
    {
        HasKey(a => a.Id);
        Property(a => a.Id).HasColumnName("UserId");

        HasRequired<Department>(a => a.Department).WithOptional().Map(a => a.MapKey("DepartmentId"));
    }
}

public class Department
{
    public int Id { get; set; }
    public String Name { get; set; }
}

internal class DepartmentMapping : EntityTypeConfiguration<Department>
{
    public DepartmentMapping()
    {
        HasKey(a => a.Id);
        Property(a => a.Id).HasColumnName("DepartmentId");
    }
}

public class Rota
{
    public int Id { get; set; }
    public virtual Employee Employee { get; set; }
    public virtual Department Department { get; set; }
}

internal class RotaMapping : EntityTypeConfiguration<Rota>
{
    public RotaMapping()
    {
        HasKey(a => a.Id);
        Property(a => a.Id).HasColumnName("RotaId");

        HasOptional<Employee>(a => a.Employee).WithOptionalDependent().Map(a => a.MapKey("EmployeeId"));
        HasOptional<Department>(a => a.Department).WithOptionalDependent().Map(a => a.MapKey("DepartmentId"));
    }
}

Не сложно, совсем не так. В Rota может быть назначен сотрудник и / или отдел, все это настраивается с помощью Fluent. Все мои ассоциации верны (схема идеальна), однако у меня странная странность.

Когда я делаюmyContext.Departments.FirstOrDefault() и взглянуть на сгенерированный SQL, естьЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ на сотрудника и рота. Почему это там?
Я не хочу этого делать. Может быть, мои отображения Fluent неверны? Я пробовал все виды, но не могу понять это. Я бы понял, если бы я хотел объект Rota, который присоединился бы к Департаменту. Но не наоборот!

Если я сделаюmyContext.Departments.AsNoTracking().FirstOrDefault() это не делаетЛЕВЫЕ НАРУЖНЫЕ СОЕДИНЕНИЯ.

Есть идеи, ребята?

Ура, D

Ответы на вопрос(3)

Ваш ответ на вопрос