NHibernate-查询前刷新?

NHibernate-查询前刷新?,nhibernate,Nhibernate,我有一个repository类,它使用NHibernate会话将对象持久化到数据库。默认情况下,存储库不使用显式事务——这由调用方来管理。我有以下单元测试来测试我的NHibernate管道: [Test] public void NHibernate_BaseRepositoryProvidesRequiredMethods() { using (var unitOfWork = UnitOfWork.Create()) { // test

我有一个repository类,它使用NHibernate会话将对象持久化到数据库。默认情况下,存储库不使用显式事务——这由调用方来管理。我有以下单元测试来测试我的NHibernate管道:

[Test]
public void NHibernate_BaseRepositoryProvidesRequiredMethods()
{            
    using (var unitOfWork = UnitOfWork.Create())
    {
        // test the add method
        TestRepo.Add(new TestObject() { Id = 1, Name = "Testerson" });
        TestRepo.Add(new TestObject() { Id = 2, Name = "Testerson2" });
        TestRepo.Add(new TestObject() { Id = 3, Name = "Testerson3" });

        // test the getall method
        var objects = TestRepo.GetAll();
        Assert.AreEqual(3, objects.Length);

        // test the remove method
        TestRepo.Remove(objects[1]);
        objects = TestRepo.GetAll();
        Assert.AreEqual(2, objects.Length);

        // test the get method
        var obj = TestRepo.Get(objects[1].Id);
        Assert.AreSame(objects[1], obj);
    }
}
问题是这条线

Assert.AreEqual(3, objects.Length);
测试失败,因为从
GetAll
方法返回的对象列表为空。如果我在插入三个对象之后立即手动刷新会话,那么测试的这一部分就通过了。我在会话中使用默认的FlushMode,根据文档,它应该在运行查询检索所有对象之前刷新,但显然不是。我错过了什么

编辑:我在单元测试场景中使用Sqlite,如果这有什么不同的话。

您这样说吗

根据文档,应该在运行查询检索所有对象之前刷新

但在,文档声明在自动刷新模式下(重点是我的):

会话有时会刷新 在查询执行之前,为了 确保查询永远不会返回过时 国家。这是默认的刷新模式

因此,是的,您需要先刷新以保存这些值,然后才能期望它们显示在您的选择中