0

如果我的网页上有 10 个数据库调用,并且它们都不需要任何事务等。它们只是从数据库中获取数据(读取),我还应该使用工作单元类吗?

是因为为每个数据库调用创建一个新会话太昂贵了吗?

4

2 回答 2

0

使用 NHibernate,创建会话工厂非常昂贵(因此您可能希望在创建会话工厂后缓存它,可能在 上HttpApplication)但创建会话非常便宜。换句话说,如果它使您的代码更干净,那么创建多个会话不一定是坏事。我认为 NH 文档说得最好:

ISessionFactory 是一个创建成本高、线程安全的对象,旨在由所有应用程序线程共享。ISession 是一个廉价的、非线程安全的对象,应该为单个业务流程使用一次,然后丢弃。

因此,由于额外的开销,使用 UoW 模式可能不会有效,但这是一个很好的做法,开销可能不会伤害您。过早的优化等等。

于 2009-05-29T15:43:07.830 回答
0

是的,您应该使用事务。来自 Ayende 的博客:

“NHibernate 假定对数据库的所有访问都是在事务下完成的,并且强烈反对在没有事务的情况下使用任何会话。”

有关更多详细信息,这是他的博客文章的链接:

http://ayende.com/Blog/archive/2008/12/28/nh-prof-alerts-use-of-implicit-transactions-is-discouraged.aspx

于 2009-06-01T13:12:29.503 回答