结合单例模式和存储库模式

本文关键字:模式 存储 单例模式 结合 | 更新日期: 2023-09-27 17:54:23

在本文的帮助下,我在我的软件中实现了存储库模式。有一个问题困扰着我。我认为数据库类应该实现单例模式,因为用户不应该使用"var ourDatabase = new Database();"语句创建多个数据库上下文。我是对的,还是这种情况不是使用实现的关键问题?

结合单例模式和存储库模式

您不应该将数据库上下文作为实体框架的单例。对于初学者来说,每个上下文实例跟踪对它所做的所有更改,并且"保存更改"保存所有更改。如果你有一个web应用你把你的context设为singleton那么所有的用户都会更新相同的context当有人叫"save changes"它会为所有人保存更改。在单用户Windows应用程序中,除非应用程序的不同部分并行工作,否则这不是一个问题。

还要注意上下文缓存它已经加载的数据,并在默认情况下跟踪更改。简而言之,随着越来越多的对象被跟踪,这可能意味着内存膨胀和性能下降——尽管在实践中这种影响各不相同。

从性能的角度来看,实体框架在底层实现了连接池,所以不用担心创建和处理数据库上下文对象——这是非常便宜的。