如何在NHibernate中使用UnitOfWork

当我们使用UnitOfWork类时,都需要打开一个Session。所以这里我们需要在IUnitOfWorkFactory中添加对应Session的工厂,以及Session的数据库链接配置,如下图:

这个工厂中有两个基本的方法,一个是用来创建一个UoW,另外一个是无效掉UoW实体(先不考虑无效掉UoW):

接下来我们考虑如果实现UnitOfWorkFactory这个类,它继承了IUnitOfWorkFactory这个接口,因为它的Create方法需要返回一个类是继承IUnitOfWork接口的。这个类和它的接口如下:

有了这个类,我们就可以实现UnitOfWorkFactory的方法了。

接下来我们实现对UnitOfWorkFactory的测试方法:

首先我们需要使用Activator的CreateInstance方法来实例化一个UnitOfWorkFactory的类。

然后如何判断这个Factory是正确能够运行的呢?

1.Create()方法返回的implementor不为空;

2.CurrentSession不为空;

3.Flush Mode为Commit。

运行测试类,失败。。。。。

查找原因你会发现时因为我们的SessionFactory为空,而它又是通过Configuration来创建的,也就是我们需要一个NHibernate的配置文件来生成SessionFacotry。