странный. (Наверное, совсем не странно)
У меня есть 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, на Employee & Rota появляется LEFT OUTER JOIN . Почему это там?
Я не хочу этого делать. Может быть, мои отображения Fluent неверны? Я пробовал все виды, но не могу понять это. Я бы понял, если бы я хотел объект Rota, который присоединился бы к Департаменту. Но не наоборот!
Если я сделаю myContext.Departments.AsNoTracking().FirstOrDefault()
, он не сделает LEFT OUTER JOIN's .
Есть идеи, ребята?
Ура,
D