延遲加載不在EntityFramework Core中工作

asp.net-core entity-framework-core

下面是兩個使用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; }
}

如果我使用以下行檢索員工,則Department的導航屬性為null:

        var employees = _context.Employees.ToList();

但是,如果我首先用Departments填充一個單獨的變量,就像這樣......

        var departments = _context.Departments.ToList();

        var employees = _context.Employees.ToList();

... employees列表中的每個員工都包含Department對象。

我的問題:填充導航屬性的最佳做法是什麼?我曾經想像過Entity Framework默認會這樣做,並且ToList()方法會處理延遲加載。

熱門答案

閱讀文檔 / 路線圖,您已經意識到EF Core 1.0 / 1.1尚不支持延遲加載。

目前僅支持.Include或eager loading,這兩者都在文檔中有詳細記載。

您不能假設EF Core中的所有功能都可用於EF Core。 EF Core是一個完整的重寫 ,不包括EF6的許多功能。如果你需要任何這些東西,你應該繼續使用EF6。

EF Core足以滿足大多數簡單/基本的ORM需求,但即使是微軟也建議您在依賴這些功能的情況下使用EF6進行生產。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow