Bog*_*gac 3 asp.net-mvc entity-framework dependency-injection ninject ninject.web.mvc
到目前为止,我一直在我的项目存储库模式和依赖注入中实现.我为ORM使用Entity Framework,并且还有一个管理我的存储库的服务层.
我有点想做一些对手头的问题不那么重要的事情.我不太可能更改我的数据库或ORM.对于小型项目,我不需要实施测试.
但我喜欢每次获取数据时都不向数据库发送请求的想法,如果它已经在内存中从那里获取数据.
我的问题是:如果我在Asp.Net MVC应用程序中使用Entiry Framework,而不是使用存储库模式,但仍然在EF的DBContext上使用DI,我可以通过阻止往返数据库服务器读取来获得性能的好处吗?
通过在DbContext上实现DI,我的意思是Ninject示例:
kernel.Bind<MyDBContext>().ToSelf().InRequestScope();
Run Code Online (Sandbox Code Playgroud)
谢谢
添加存储库模式上的EF的顶部DbContext并没有在性能优化提供帮助.
这DbContext是一个工作单元,用于跟踪加载/更改/添加的实体.A IDbSet<T>基本上是一个存储库.所以DbContext有一个存储库列表.该DbContext负责做一些性能优化技术如不加载同一个实体两次,而是返回同一个实例,当你通过ID加载它的两倍.当然,要实现此目的,您必须重用相同的DbContext实例.如果您创建两个DbContext实例,它们将同时加载同一个实体.
所以使用
kernel.Bind<MyDBContext>().ToSelf().InRequestScope();
Run Code Online (Sandbox Code Playgroud)
而不是把你自己的"存储库模式"放在上面MyDBContext是完全没问题的.
| 归档时间: |
|
| 查看次数: |
3332 次 |
| 最近记录: |