如何解决如何使用多对多关联实现实体,以便能够使用NHibernate保存根对象?
| 我有两个实体: public class Group
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
private ICollection<Item> _items = new HashSet<Item>();
public virtual ICollection<Item> Items
{
get { return _items; }
set { _items = value; }
}
}
public class Item
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
我将自动映射与以下覆盖一起使用:
automapping.Override<Group>(m => m.HasManyToMany(_ => _.Items).AsSet());
我构造了一个组对象,并添加了一些项目将它们添加到该组对象中。当我使用session.Save(group)
保存组对象时,会发生异常:
NHibernate.TransientObjectException:对象引用了一个未保存的瞬态实例-在刷新之前保存该瞬态实例。类型:NhResearch.ManyToManyTests + Item,实体:0 item1
在NHibernate.Engine.ForeignKeys.GetEntityIdentifierIfNotUnsaved(字符串EntityName,对象实体,ISessionImplementor会话)
我在这里想念什么?
解决方法
您缺少级联设置。
m => m.HasManyToMany(_ => _.Items).AsSet().Cascade.AllDeleteOrphan()
全部-如果要保存更新和删除项目
AllDeleteOrphan-与所有相同,但也会删除孤立的项目
SaveUpdate-级联保存或更新
删除-级联仅删除的项目
仅供参考,您可能还缺少Table规范以及父键和子键列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。