リポジトリ、サービス、および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