我有一个Person类,它有一个Tags属性
public virtual System.Collections.Generic.List<Tag> Tags { get; set; }
包含Tag类对象的集合。
鉴于系统设计,最初创建Person类的实例,然后用户可以稍后向Person添加标签。
作为NHibernate的新手,我可以弄清楚如何将一个或多个标签添加到现有的人物对象中。我是否需要检索Person对象然后添加()一个或多个新的Tag对象?列表中可能还有Tag对象。
与删除Tags集合中现有Tag对象相关的相同问题。
由于
答案 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是否会强制对象被实例化?