我希望在当前会话中加载所有持久对象。
我知道与会话关联的持久化上下文缓存,包含当前会话中加载的所有对象的字典。任何人都可以告诉我如何知道IPersistenceContext缓存中加载的所有对象吗?
//创建我们的NHibernate会话工厂
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
Employee emp;
// populate the database
using (var transaction = session.BeginTransaction())
{
emp = session.Query<Employee>().Where(x => x.Name == "Bargin Basin").FirstOrDefault();
var entries = session.GetSessionImplementation().PersistenceContext.EntityEntries;
foreach (var item in entries)
{
var entityEntry = entries[item];
//I want the objects of my type like..
//Employee persistedEmp = entityEntry as Employee;
}
}
}
答案 0 :(得分:1)
我可能没有正确理解你的问题,因为如果你已经知道有一个PersistenceContext,那就非常简单了,但是你可以去了:
ICollection entities = _session
.GetSessionImplementation()
.PersistenceContext
.EntityEntries
.Keys;