+1 大猩猩,取得了一些商品积分。我将添加以下想法。
在 web/mvc 场景中,我使用了几十个存储库并将上下文注入到这些存储库中。我使用存储库基类。我还在构造函数中使用上下文的 UoW 类。工作单元类包含对上下文所有受支持存储库的引用。我也使用有界上下文。这是 Julie Lerman 关于这个主题的示例博客。
http://www.goodreads.com/author/show/1892325.Julia_Lerman/blog
所以是的,使用多个上下文和使用多个存储库是非常有意义的。您甚至可能有多个工作单元类,但同时使用 UoW 类是另一个讨论。
根据要求添加示例代码:此示例是从基本 LuW 类继承的几个 LuW 类之一。当前状态和要使用的 DBContext 被注入。(或默认)存储库是来自 CORE 项目的接口。LuW 类在 DAL 项目中。
基础 LuW 类似于....
public interface ILuw : ILuwEvent, IDisposable
{
IBosCurrentState CurrentState{ get; set; }
OperationStatus Commit();
}
Luw类本身。
namespace XYZ.DAL
{
public class LuwBosMaster : Luw, ILuwBosMaster
{
public LuwBosMaster(DbContext context, IBosCurrentState currentState)
{
base.Initialise(context,currentState);
}
public LuwBosMaster()
{
base.Initialise(GetDefaultContext(), BosGlobal.BGA.IBosCurrentState);
}
public static DbContextBosMaster GetDefaultContext()
{
return new DbContextBosMaster("BosMaster");
}
//MasterUser with own Repository Class
private IRepositoryMasterUser _repositoryMasterUser;
public IRepositoryMasterUser RepMasterUser
{ get { return _repositoryMasterUser ?? (_repositoryMasterUser = new RepositoryMasterUser(Context, CurrentState)); } }
//20 other repositories declared adn available within this Luw
// Some repositories might address several tables other single tables only.
// The repositories are based on a base class that common generic behavior for each MODEL object
我相信你得到了基本的想法......