寻找有关如何更新实体集合的一些建议。在Web应用程序中 - 我们有一个多选列表框,允许用户从可用实体列表中分配和删除子实体。用户将选择与父母相关联的相关孩子。即可能属于多个类别的产品。一旦用户满意,他们就会提交并更新实体。
在考虑性能的情况下,更新(删除已移除的子项,添加新子项)的首选方法是什么?我不想运行几个sql语句来获取每个子节点并将其添加到父节点。
干杯
附加映射:
public class ParentMap : EntityMapping<Parent>
{
public ParentMap()
{
Map(x => x.Name);
HasMany(x => x.Children)
.Cascade.AllDeleteOrphan()
.Access.LowerCaseField(Prefix.Underscore);
}
}
public class ChildMap : EntityMapping<Child>
{
public ChildMap()
{
References(x => x.Parent);
}
}
public abstract class EntityMapping<TEntity> : ClassMap<TEntity> where TEntity : EntityBase
{
protected EntityMapping()
{
Id(x => x.Id, "Id")
.UnsavedValue("00000000-0000-0000-0000-000000000000")
.GeneratedBy.GuidComb();
OptimisticLock.Version();
Version(entity => entity.Version);
}
}
答案 0 :(得分:0)
在父实体和子实体之间建立级联关系,并强制它对所有操作(如更新,删除等)执行操作。您必须在HBM映射文件中定义级联行为。有关详细信息:http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-mapping