2014-10-01 150 views
0

使用實體框架6和MVC 5,假設我有以下型號:實體框架dbset哪些模型?

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

class Department 
{ 
    public int DepartmentID { get; set; } 
    public String DepartmentName { get; set; } 
    public int FloorNumber { get; set; } 
} 

在我DbContext類的地方去DbSet,我只做DbSet<Employee>或做我也要做DbSet<Department>?現在我只做DbSet<Employee>,因爲我明白它的方式,主要模型是Employee其中有一個複雜的類型Department裏面,所以理論上如果Employee加載然後部門應該被動地加載(如在創建表中加載)?

目前,我有Department作爲延遲加載一個virtual字段,因爲當我嘗試沒有virtual屬性,我得到一個null pointer exception訪問它。

此外,我的模型比多個複雜對象複雜一點,這些都需要自己DbSet

謝謝

回答

3

按照documentation(重點是我的):

類型發現

<剪斷>

在下面的例子中,只有一個DbSet屬性定義於 SchoolEntities類(Dep artments)。 Code First使用此屬性 來發現並引入任何引用的類型。

但是,如果你想處理的Employee自主列出了從您的Department,那麼你應該包括它。

+0

謝謝你的回答,但是,員工和部門之間沒有繼承關係,部門只是員工模型/對象內的一個複雜對象。這裏的行爲有所不同嗎? – 2014-10-01 12:49:24

+0

關於繼承的文檔是不相關的,我把它們剪掉了。 – DavidG 2014-10-01 12:50:26

+0

我看到我看到了,對不起!再次感謝你 :) – 2014-10-01 12:51:42