[NUnit.Framework.Test]
public void TestInsertSelect()
{
    //数据库
    //School
    //Guid    nvarchar(32)
    //Code    nvarchar(32)
    //Name    nvarchar(32)    var session = Z.Core.NHibernateCore.NHibernateHelper.GetCurrentSession();
    session.BeginTransaction();
    try
    {
        var school = new Model.Tst.School();
        school.Code = "AAA";
        school.Name = "AAA";
        //添加一个School Code 为 AAA 的记录 插入数据库
        session.Save(school);
        session.Flush();        //更改掉学校的代码
        school.Code = "BBB";
        //然后调用更新
        Update(session, school);
        session.Flush();
        session.Transaction.Commit();
        //但最后你看数据库,他已经变成了BBB了,但如果不用事物的话不会出现这个问题
        //原因是因为他在执行query.Count,自动提交了School的更改 
        //这是为什么呢??????????? 如何来解决这个问题
    }
    catch (Exception ex)
    {
        session.Transaction.Rollback();
    }
}void Update(NHibernate.ISession session, Model.Tst.School school)
{
    //创建一条查询
    var query = session.Linq<Model.Tst.School>();
    //取出数据库中Code=“BBB”的记录数
    int count = query.Count(l => l.Code == "BBB");
    //但这里出问题了!本来我表记录为空的,然后插入一条AAA,
    //这里查询的是表中Code="BBB"的记录数据,按道理来说应该为0,
    //但实际上是在查询之前,NHibernate会将我上面school.Code = "BBB";的操作进行更新到数据库
    //这是有严重问题的啊,因为我这里是要判断数据库没有BBB我才进行更新
    //本来,我的代码表最终结果应该为1条记录Code=CCC
    //但这样的结果的话为 Code="BBB"
    //因为在上面query.Count他就提交了BBB,而得到count=1,所以下面的代码就没有执行
    //那应该如何处理这个问题呢?
    //是否要禁用掉NHibernate的一线缓存?????
    if (count == 0)
    {
        school.Code = "CCC";
        session.Update(school);
    }
}