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

是因为每次数据库调用创建一个新会话成本太高吗?

有帮助吗?

解决方案

与NHibernate,会议工厂创建是非常昂贵的(所以你要一旦创建它缓存会话工厂,可能在HttpApplication),但会话创建是非常便宜的。换句话说,如果它让你的代码更加清晰,多会话创作未必是坏事。我认为NH文档最好说的:

  

这是ISessionFactory是   贵到创建线程对象   它为所有的共享   应用程序线程。一个ISession是   廉价的,非线程对象   应该使用一次,单个   业务处理,然后丢弃。

因此,使用UOW模式可能不是的更多的效率,由于额外的开销,但它是一个很好的做法,开销可能不会伤害你。过早的优化和所有。

其他提示

是的,您应该使用交易。来自 Ayende 的博客:

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

有关更多详细信息,请参阅他的博客文章的链接:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top