Nhibernate更新 - 更新实体上的孩子的解决方案?

时间:2010-10-16 04:43:05

标签: nhibernate

寻找有关如何更新实体集合的一些建议。在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);
        }
    }

1 个答案:

答案 0 :(得分:0)

在父实体和子实体之间建立级联关系,并强制它对所有操作(如更新,删除等)执行操作。您必须在HBM映射文件中定义级联行为。有关详细信息:http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-mapping