Below are two classes that control database tables using Code First Entity Framework (DbContext
).
public class Employee
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string EmployeeName { get; set; }
public int DepartmentId { get; set; }
public Department Department { get; set; }
}
--
public class Department
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string DepartmentName { get; set; }
}
If I retrieve the employees with the line below the navigation property for Department
is null:
var employees = _context.Employees.ToList();
However, if I first populate a separate variable with Departments
, like this ...
var departments = _context.Departments.ToList();
var employees = _context.Employees.ToList();
... Each employee in the employees
list contains the Department object.
My question:
What is best practice to populate the navigation property? I had imagined that Entity Framework would have done this by default and that the ToList()
method would handle the lazy loading.