我正在使用LINQ-to-SQL
ASP.NET MVC 4,到目前为止,我有一个与真实数据库联系的存储库层。当我想进行单元测试时,这不是很好。
存储库层中也不应该有逻辑,所以这就是我想模拟的原因,这样我就可以创建一个与模拟或真实LINQ DataContext
对话的服务层。DataContext
DataContext
我看到我的 LINQ DataContext 类继承了DataContext
,但是没有接口,所以我不能真正模拟它。我还看到 DataContext 使用Table<>
类并且存在一个 interface ITable
,所以我可能可以模拟它。我LINQ DataContext
也是一个部分类,所以也许我可以以某种方式操纵它?
当我用谷歌搜索时,所有文章都来自 2008 年并且已经过时。谁能指导我正确的方向?
这是我想做的一个例子。我将为每个控制器设置单独的服务类。
public class MyServiceClass
{
IDataContext _context;
// Constructors with dependency injection
public MyServiceClass()
{
_context = new MyRealDataContext();
}
public MyServiceClass(IDataContext ctx)
{
_context = ctx;
}
// Service functions
public IEnumerable<ModelClass> GetAll()
{
return _context.ModelClass;
}
public ModelClass GetOne(int id)
{
return _context.Where(s => s.ID == id).SingleOrDefault();
}
}