gpt4 book ai didi

asp.net-mvc - 与 Entity Framework 一起使用的没有存储库模式的依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-04 20:04:42 24 4
gpt4 key购买 nike

到目前为止,我一直在我的项目中实现存储库模式和依赖项注入(inject)。我使用 Entity Framework for ORM,还有一个管理我的存储库的服务层。

我有点想做一些对手头的问题不是那么重要的事情。我不太可能更改我的数据库或 ORM。对于小型项目,我不需要实现测试。

但我喜欢这样的想法,即每次获取数据时不向数据库发送请求,如果它已经在内存中,则从那里获取。

我的问题是:如果我在 Asp.Net MVC 应用程序中使用 Entiry Framework,而不使用存储库模式,但仍在 EF 的 DBContext 上使用 DI,我可以通过防止往返数据库服务器进行读取来获得性能优势?

通过在 DbContext 上实现 DI,对于 Ninject 示例,我的意思是这样的:

kernel.Bind<MyDBContext>().ToSelf().InRequestScope();

谢谢

最佳答案

在 EF 之上添加存储库模式 DbContext 不会有助于性能优化。

DbContext是一个工作单元,用于跟踪加载/更改/添加的实体。 IDbSet<T>基本上是一个存储库。所以 DbContext有一个存储库列表。 DbContext负责做一些性能优化,比如不加载同一个实体两次,而是当你通过 id 加载它两次时返回同一个实例。当然,要应用它,您必须重复使用相同的 DbContext。实例。如果你创建两个 DbContext实例,它们都会加载同一个实体一次。

所以使用

kernel.Bind<MyDBContext>().ToSelf().InRequestScope();

并且不要将您自己的“存储库模式”放在 MyDBContext 之上非常好。

关于asp.net-mvc - 与 Entity Framework 一起使用的没有存储库模式的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26376631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com