微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

依赖注入 – 单例中依赖注入数据连接的最佳方法

我的应用程序中有一些“缓存”对象,通过依赖注入(Ninject)获得IRepository(自定义存储库模式契约).这些对象仅使用存储库一次,但它们具有刷新功能,强制所有者自行刷新.它们是单例,只创建一次,ManualResetEvent确保在加载之前阻止所有请求.

IRepositories是基于EF CodeFirst的,所以可以简单地确保连接关闭并永远保持对DbContext的引用吗?

我已经禁用了代理和延迟加载,所以…可以从缓存对象的根目录到数百个这些缓存的POCO实体的长引用?

干杯.

解决方法

我们参考Julie Lerman的评论,
  http://msdn.microsoft.com/en-us/magazine/ee532098.aspx?sdmr=JulieLerman
建议是有几个/许多较小的上下文,并且在Web场景的情况下,每个调用创建一个新的上下文.
虽然她在实体框架和AppFabric中写了关于二级缓存的文章.

随着时间的推移,上下文将包含许多对象,并且性能将相应地下降.
我认为这个网站有一些关于EF性能的好建议.
例如生成的视图.
http://msdn.microsoft.com/en-us/data/hh949853

我个人的建议,我不能说是最好的做法,但是从关心表现的人那里,每个电话的小范围内容一个坚实的长期妥协.
使用生成的视图可以使初始加载时间尽可能小.

您可以通过以下方式管理永久DBContext,以便从上下文中删除未使用的对象.或者使用带有事件的缓存库来执行此操作.不是一个小任务.

我会对您最终选择的解决方案感兴趣.请发布.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐