2

リポジトリ、サービス、およびUoWをアプリ層に挿入し、DBcontextをUoWとリポジトリに挿入したいと思います。

DBContextは、UoWの同じコンテキストとAppLayerのすべてのリポジトリである必要がありますが、applayerが破棄されたら破棄し、すべてのAppLayer解決で新しいDBContextを作成する必要があります。

UnityのDBContextタイプマッピング構成のPerResolveLifetimeManagerは、この場合に適していますか?

例:

//main
appLayer = resolve<IAppLayer>
appLayer.doSomeStuff()
appLayer.dispose()
// end main

//applayer class
public class AppLayer : IAppLayer{

  AppLayer(IRepository, IBusinesService, IUoW){...//init vbles} //ctor, dependencies injected by Unity

  public void doSomeStuff(){

    using(transactionScope){

      businessEntity = IRepository.findEntity()
      IBusinessService.modifyEntity(businessEntity) 
      IUoW.saveChanges() //works because IRepository is using the same DBContext to find the entity, so the entity is attached to the same DBContext.

    }//end using

  }//end doSomeStuff

}//end applayerclass
4

1 に答える 1

2

PerResolveLifetimeManagerは、このシナリオに最適です。永続性キャッシュとインスタンスのハッシュコードをチェックする経験的テストを行いました。

于 2013-07-05T10:04:19.067 に答える