0

我们在我们的 AspNet webapp 中使用 NHibernate 和 OpenSessionInView 模式。

使用 ADO 连接(SqlServer),我们希望在每次访问页面时登录不同的数据库。为此,我们是否需要在每次“页面加载”时打开一个连接,执行插入,然后关闭连接,还是我们可以在所有请求之间保持相同的连接共享?

锁和并发访问呢?我们只在这个数据库上插入。

4

1 回答 1

1

是的,我会选择open --> insert --> close.的原因是 SQL 连接 - 以及大多数数据库连接,取决于驱动程序 - 是池化的,所以打开一个新连接实际上意味着从池中获取一个连接,这很便宜(除非你用完了池中的连接)。另一方面,如果您坚持一个打开的连接,您最终会遇到大量的并发问题,因为您必须为每个请求同步对该连接对象的访问。换句话说,一场噩梦。实际上,您将阻止您的请求并大大减慢速度。

同样,您并没有真正提高性能 - 恰恰相反 - 并且您正在使您的应用程序复杂化。

于 2012-05-10T16:28:06.230 回答