我们首先使用EF和DB,我们不打算为每个表创建Repository类。相反,我们将拥有表示模块的存储库类,这些模块在内部可能与多个表交互。
我开始编写的代码是这样的:
public class ModuleRepository
{
public void GetModules()
{
using (IUnitOfWork uow = new UnitOfWork())
{
//Get the specific DBSet
var dbTable = uow.GetDbSet<Customer>();
var dbTable1 = uow.GetDbSet<Supplier>();
//do whatever you want to do.
//call save changes to commit
uow.SaveChanges();
}
}
}
class UnitOfWork: IUnitOfWork
{
private DbContext _context;
public UnitOfWork()
{
_context = new DbContext("");
}
public void Dispose()
{
throw new NotImplementedException();
}
public void SaveChanges()
{
throw new NotImplementedException();
}
public DbSet<T> GetDbSet<T>() where T:class
{
DbSet<T> entities = _context.Set<T>();
return entities;
}
}
public interface IUnitOfWork: IDisposable
{
void SaveChanges();
DbSet<T> GetDbSet<T>() where T : class;
}
在SaveChanges中,我将_context.SaveChanges()
将更改提交给数据库。
我想这是一种方法。
另一种可能的方式是:
我认为代码明智它会起作用,但不确定哪一种是正确的方法,或者可能有更好的方法。
同样在这两种场景中的任何一种,如何实现单元测试?关于这个的任何想法?