首页 新闻 搜索 专区 学院

使用unity container共享实例的问题.

0
悬赏园豆:20 [已解决问题] 解决于 2015-11-09 09:55
var container = new UnityContainer();
container.RegisterType<IDbContext, SchoolDbContext>();
container.RegisterType<IObjectTrackingManager, UnitOfWork>();
container.RegisterType<IUnitOfWork, UnitOfWork>();
container.RegisterType<IStudentRepository, StudentRepository>();
container.RegisterType<ITeacherRepository, TeacherRepository>();
container.RegisterType<IStudentService, StudentService>();

_studentService = container.Resolve<IStudentService>();
  • IDbContext 在很多类型里面都有注入, 如何共享同一个IDbContext实例?且生命周期只在_studentService内有效.
  • container.RegisterType<IObjectTrackingManager, UnitOfWork>(); container.RegisterType<IUnitOfWork, UnitOfWork>();

    这两个类型可以共享实例吗?

 

我实际想要的效果是: 一次http request的生命周期中共享 IDbContext, UnitOfWork 等实例, 不只在_studenttService内也可以, 请求结束后释放, 避免冲突和体积过大.

xiezhenhao的主页 xiezhenhao | 初学一级 | 园豆:100
提问于:2015-11-05 10:38
< >
分享
最佳答案
0

看到这个帖子之后逛了一圈: http://stackoverflow.com/questions/5187562/mvc-ef-datacontext-singleton-instance-per-web-request-in-unity

最终只需要使用PerResolveLifetimeManager就能解决以上2个问题...

以前都理解错了, 以为PerResolveLifetimeManager只能解决循环引用. 现在明白了, 它的作用就是字面上的意思!

xiezhenhao | 初学一级 |园豆:100 | 2015-11-09 09:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册