18

我试图通过将工作单元实例传递到我的存储库来实现工作单元模式。

来自 Global.asax 的相关代码。

public class SiteModule : NinjectModule
{
    public override void Load() {        
       Bind<IUnitOfWork>().To<SqlUnitOfWork>()
                          .InRequestScope()
                          .WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["Entities"].ConnectionString);

       Bind<IProductRepository>().To<ProductRepository>();
       Bind<ICategoryRepository>().To<CategoryRepository>();
    }
}


存储库构造函数:

public class ProductRepository {
    IUnitOfWork unitOfWork;
    public ProductRepository(IUnitOfWork unitOfWork) {
        this.unitOfWork = unitOfWork;
    }
}

public class CategoryRepository {
    IUnitOfWork unitOfWork;
    public CategoryRepository(IUnitOfWork unitOfWork) {
        this.unitOfWork = unitOfWork;
    }
}


我想要的SqlUnitOfWork是每个请求最多创建 1 个实例并将其传递到我的存储库中(通过它们各自的构造函数)。

绑定上的InRequestScope()方法够吗?IUnitOfWork如果不是我怎么能做到这一点?

4

1 回答 1

8

您拥有的代码可以正常工作。IUnitOfWork任何请求它的类都只会提供一个实例(通过构造函数/属性注入或调用内核.Get<>等)

于 2010-10-14T01:26:23.757 回答