【发布时间】:2019-12-24 06:05:29
【问题描述】:
我开发了一个使用数据库连接的 Windows 服务。
我创建了以下字段:
private MyDBEntities _db;
在 OnStart 中我有:
_db = new MyDBEntities();
然后服务开始工作。
在 OnStop 方法中我有:
_db.Dispose();
_db = null;
这种方法有缺点吗?出于性能原因,我需要在服务运行时始终打开数据库(即 SQL Server)。
谢谢 詹姆
【问题讨论】:
-
你能给我们一个为什么它应该总是连接的理由吗?为什么只有在使用时才能连接?这可能会让我们更好地了解该做什么。
-
这是一个对性能非常关键的应用程序。某些外部设备会生成一个由我的服务捕获的事件。在那种情况下,我需要对数据库运行一些查询。不能接受的是每次收到事件,数据库都打开,做任务然后关闭。
-
1.如果是这种情况,请删除所有代码并使其成为静态类。如果您要一直保持打开状态,为什么要重新创建所有实体的实例并调用 dispose? 2. 打开连接的性能开销很小,以至于您永远不会注意到。 Myabe 你可以给我们更多的上下文和代码吗?到目前为止,这种方法没有意义。
-
您无法分析猜测,我们无法审查您不会向我们展示的代码。正如@William 所说,Entity Framework 实现了连接池,因此它不会为每个请求“打开然后关闭”连接。咨询Entity Framework and Connection Pooling,开始编写测试代码。
标签: c# entity-framework-6 windows-services