ASP.NET MVC、Ninject、単一インスタンス複数のコンストラクターのリクエストごとに単一インスタンス

StackOverflow https://stackoverflow.com/questions/3897690

質問

仕事のユニットインスタンスを私のリポジトリに渡すことにより、仕事パターンの単位を実装しようとしています。

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;
    }
}


私が望んでいるのは、最大1インスタンスの SqlUnitOfWork リクエストごとに作成され、(それぞれのコンストラクターを介して)私のリポジトリに渡されます。

それは InRequestScope() の方法 IUnitOfWork 十分に結合しますか?そうでない場合は、どうすればこれを達成できますか?

役に立ちましたか?

解決

あなたが持っているコードは正常に動作します。の1つのインスタンスのみ IUnitOfWork それを要求するクラスに与えられます(コンストラクター/プロパティインジェクションを介して、またはカーネルへの呼び出し .Get<> 等。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top