作業単位インスタンスをリポジトリに渡すことで、作業単位パターンを実装しようとしています。
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
十分ですか?そうでない場合、どうすればこれを達成できますか?