我正在使用 Ayende 的 NHibernate Linq 版本 2.1.2,可在此处获得,并且当我使用 NHProf 检查使用此方法的查询时:
public IQueryable<T> GetAll()
{
return Session.Linq<T>();
}
它给了我一个警告,我正在使用隐式事务。问题是,我在存储库中使用它来抽象出数据库会话,但我仍然想要返回 IQueryable 的灵活性,这样我就可以运行我想要的任何 Linq 查询。有没有办法Session.Linq<T>()
在不暴露的情况下显式地将其包装在事务中,或者在这种情况下我应该忽略警告吗?
多一点背景。我正在使用这样的方法:
var repo = new Repository();
var animals = repo.GetAll<Animal>().Where(x => x.Size > 100);
NoahsArk.LargeAnimals.AddRange(animals);