坚持顶级收藏?

时间:2009-08-09 21:14:26

标签: nhibernate

NHibernate允许我查询数据库并获得一个IList的对象作为回报。假设我得到了几十个对象的列表并修改了大约六个对象。 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的更改,或者我必须在创建它时保留每个新对象?谢谢你的帮助。

David Veeneman
远见系统

1 个答案:

答案 0 :(得分:1)

如果您加载了示例中的对象 - 那么是的,您必须逐个保留它们。

但是,如果您进行了一些小的设计更改,并加载了类似:具有IList<Project>的帐户 - 如果您在映射中指定级联“what_cascade_you_need”,那么当您更改帐户上的项目时,您只能必须保存帐户,一切都会被保存。