NHibernate saving“;“中间人”;和他有很多联系
我们有产品、类别和产品分类类 产品有许多ProductToCategories,类别有许多ProductToCategories 产品包括此属性NHibernate saving“;“中间人”;和他有很多联系,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我们有产品、类别和产品分类类 产品有许多ProductToCategories,类别有许多ProductToCategories 产品包括此属性 public virtual IList<ProductToCategory> Categories { get; set; } 类别包括这些属性 public virtual Category Parent { get; set; } public virtual IEnumerable<Category>
public virtual IList<ProductToCategory> Categories { get; set; }
类别包括这些属性
public virtual Category Parent { get; set; }
public virtual IEnumerable<Category> Children { get; set; }
public virtual IEnumerable<ProductToCategory> Products { get; set; }
类别映射覆盖
mapping.HasMany(x => x.Categories)
.Cascade.AllDeleteOrphan()
.Inverse();
mapping.HasMany(x => x.Children)
.Cascade.AllDeleteOrphan()
.KeyColumn("ParentId");
mapping.References(x => x.Parent).Column("ParentId");
mapping.References(x => x.Category);
产品到类别映射覆盖
mapping.HasMany(x => x.Categories)
.Cascade.AllDeleteOrphan()
.Inverse();
mapping.HasMany(x => x.Children)
.Cascade.AllDeleteOrphan()
.KeyColumn("ParentId");
mapping.References(x => x.Parent).Column("ParentId");
mapping.References(x => x.Category);
当我想要保存一个产品时,我需要NHibernate删除任何与该产品链接的现有ProductToCategories,并添加从UI传递的ProductToCategories,同时更新其他产品属性,如名称、零件号等
当提供my Product类的实例时,确保NHibernate保存对产品(包括链接的ProductToCategories)的更改的最简洁的方法是什么。如果来自UI的产品实例与NHibernate会话没有关联,而是一个持久实体(具有有效标识)然后
session.Merge(instance)
或session.SaveOrUpdateCopy(instance)
就可以了。他们将从数据库中获取该实体的副本,并保存实例与数据库实例之间的更改