1

最近,我有請求讓我的DbContext模型可以嘲笑。DbSetT <T> vs IDbSet <T>

但是,目前它的定義是這樣的:

public MyDbContext : DbContext 
{ 
    public DbSet<Employee> Employees {get;set;} 
} 

我想給它抽象到:

public interface IMyDbContext 
{ 
    IDbSet<Employee> Employees {get;set;} 
} 

public MyDbContext : DbContext, IMyDbContext 
{ 
    IDbSet<Employee> Employees {get;set;} 
} 

難道我失去了什麼,如果我在MyDbContext實現交換DbSet與IDbSet?

回答

1

我認爲模擬和真實的數據庫對象應該共享相同的接口。這樣你就可以在不影響客戶端的情況下交換數據庫實現。嘲笑也更容易。面向方面的編程更容易。我想不出有什麼好的理由不是來啓動一個接口。

+2

DbSet有一些IDbSet不公開的方法。如果我在DbContext類定義中使用IDbSet,我感興趣的是多少。這是EF更具體的問題,而不是設計模式之一。 –