2009-08-09 78 views
2

NHibernate允许我查询一个数据库并获得一个IList对象作为回报。假设我得到了几十个对象的列表并修改了大约6个对象。 NHibernate是否有一种方法来保存对集合的更改,还是我必须在更改它时保留每个对象?坚持顶级集合?

下面是一个例子。假设我运行以下代码:

var hql = "from Project"; 
var query = session.CreateQuery(hql); 
var myProjectList = query.List<Project>(); 

我将找回包含所有项目的IList。现在假设我执行下面的代码:

var myNewProject = new Project("My New Project"); 
myProjectList .Add(myNewProject); 

而且让我们说我这样做了好几次,增加了几个新的项目列表。现在我准备好继续对集合进行更改。

我想通过将myProjectList传递给当前的ISession进行更新来坚持更改。但 ISession.SaveOrUpdate()似乎只接受单个对象,而不是像myProjectList这样的集合。有没有办法让我可以坚持更改myProjectList,或者我必须坚持每个新的对象,因为我创建它?谢谢你的帮助。

大卫Veeneman
远见系统

回答

1

如果加载喜欢在你的榜样对象 - 然后是你必须坚持逐一。但是,如果您进行小的设计更改并加载如下内容:具有IList<Project>的帐户 - 如果您在映射中指定级联“what_cascade_you_need”,那么当您在Account上更改项目时,只需保存帐户和一切都会得到保存。