当使用 Rhino Commons UnitOfWork(在 ASP-MVC 的 UnitOfWorkApplication 中)时,我喜欢使用 Rhino Repository 静态类来保存这样的实体:
Repository<Car>.Save(new Car(Id = 1));
我发现我可以在调用之后立即使用:
Car car = Repository<Car>.Get(1);
这工作正常。但是,当我在 Rhino UnitOfWork 上使用 NHibernate Linq 提供程序时,如下所示:
var allCars = (from rep in UnitOfWork.CurrentSession.Linq<Car>()
select rep).ToList();
我得到一个空列表。看来我必须先调用 UnitOfWork.Current.Flush() 才能像这样把车开出来。我不明白为什么,因为在幕后我假设两种检索方法都在查询同一个会话/工作单元。这是否意味着您应该在每次保存到数据库后调用 UnitOfWork.Current.Flush() ?NHibernate 不应该能够计算出何时刷新自身吗?还是我误解了什么?