Nhibernate 如果我不关心事务等,工作单位是否更有效率?

Nhibernate 如果我不关心事务等,工作单位是否更有效率?,nhibernate,unit-of-work,Nhibernate,Unit Of Work,如果我在我的网页上有10个数据库调用,并且没有一个需要任何事务等。 他们只是从数据库读取数据,我还应该使用工作类的单位吗 这是因为每次数据库调用创建一个新的会话太贵了吗?使用NHibernate,会话工厂的创建非常昂贵,因此您希望在会话工厂创建后缓存它,可能是在HttpApplication上,但会话创建非常便宜。换句话说,如果它能让代码更干净,那么多个会话创建并不一定是一件坏事。我认为NH文档最好说明: 一个工厂就是一个工厂 创建线程安全对象代价高昂 打算被所有人分享 应用程序线程。ISess

如果我在我的网页上有10个数据库调用,并且没有一个需要任何事务等。 他们只是从数据库读取数据,我还应该使用工作类的单位吗


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

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

一个工厂就是一个工厂 创建线程安全对象代价高昂 打算被所有人分享 应用程序线程。ISession是一个 廉价的非线程安全对象 这应该用一次,一次 业务流程,然后丢弃


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

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

NHibernate假定对数据库的所有访问都是在一个事务下完成的,强烈反对在没有事务的情况下使用会话

欲了解更多详情,请点击他的博客链接: