最近,我已经要求让我的DbContext模型可以模拟。
但是,目前定义如下:
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交换,我会失去任何东西吗?
答案 0 :(得分:1)
我认为模拟和真实数据库对象应该共享相同的接口。这样,您可以在不影响客户端的情况下更换数据库实现。模拟也更容易。面向方面编程更容易。我想不出一个很好的理由不用接口启动它们。