NHibernate:如何在创建包含对象后插入新的Set成员?

时间:2009-07-27 19:10:47

标签: .net nhibernate

我有一个Person类,它有一个Tags属性

public virtual System.Collections.Generic.List<Tag> Tags { get; set; }

包含Tag类对象的集合。

鉴于系统设计,最初创建Person类的实例,然后用户可以稍后向Person添加标签。

作为NHibernate的新手,我可以弄清楚如何将一个或多个标签添加到现有的人物对象中。我是否需要检索Person对象然后添加()一个或多个新的Tag对象?列表中可能还有Tag对象。

与删除Tags集合中现有Tag对象相关的相同问题。

由于

1 个答案:

答案 0 :(得分:1)

如果标签知道它属于哪个人,你可以这样做:

var person = session.Load<Person>(id);
var tag = new Tag() { Person = person; /* stuff */ };
session.Save(tag);

session.Flush();

这应该避免对人进行查询。

我还认为您需要将标签更改为IList。


编辑:

移动其他示例...我认为它不会避免选择查询。

var person = session.Load<Person>(id);
person.Tags.Add(new Tag() { /* stuff */ };

session.Flush();

我不确定访问Tags是否会强制对象被实例化?