2013-10-05 17 views
0

使用實體框架時,我爲每個所需的模型製作標準的C#類。所以,如果我有一個汽車模型,它可能看起來像下面這樣:我可以將實體框架模型邏輯封裝到模型本身中嗎?

public class Car 
{ 
    public string Model { get; set; } 
} 

,並管理我的數據庫內的車型,我創建了一個DbContext類與DbSet<Car>屬性裏面。這很好,但是我覺得這個額外的DbContext類是沒有必要的。有沒有辦法以我自己的方式管理自己的DbSet<Car>

public class MyDbContextClass : DbContext 
{ 
    public DbSet<Car> Cars { get; set; } 
} 

取而代之的是下面的工作流程:

var db = new MyDbContextClass(); 
var cars = db.Cars.ToList(); 

我想看看是否有可能使用以下工作流程:

var cars = Car.ToList(); 

這可能嗎?

+1

絕對有可能的,但有什麼好處? –

+0

除化妝品外,沒有其他好處。減少代碼行並需要創建該上下文類。也許我只能保留Car類中的所有特定於Car的代碼。 – Ryan

+1

數據檢索不是實體特定的。這是另一個類,db語境的責任。域實體應該不知道它們的存儲/檢索方式。 –

回答

3

可以以這樣的方式包裹DbContext,但它可能會令你實現更多,那麼你爲了使鬆動的同時表現它的工作打算。

我認爲你最好保持它的意思是,因爲我沒有看到像你提到的那樣做任何好處。 您將DbContext耦合到模型並嘗試創建超級對象 - 負責數據表示和數據訪問層的對象。

這就導致了一個糟糕的設計和對Separation of Concerns Principle

不要試圖以減少在糟糕的設計價格的代碼行數。