Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何实现具有多对多关联的实体,以便能够使用NHibernate保存根对象?_Nhibernate_Nhibernate Mapping_Many To Many - Fatal编程技术网

如何实现具有多对多关联的实体,以便能够使用NHibernate保存根对象?

如何实现具有多对多关联的实体,以便能够使用NHibernate保存根对象?,nhibernate,nhibernate-mapping,many-to-many,Nhibernate,Nhibernate Mapping,Many To Many,我有两个实体: 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&

我有两个实体:

    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; }
    }
公共类组
{
公共虚拟整数Id{get;set;}
公共虚拟字符串名称{get;set;}
私有ICollection_items=new HashSet();
公共虚拟ICollection项目
{
获取{return\u items;}
设置{u items=value;}
}
}
公共类项目
{
公共虚拟整数Id{get;set;}
公共虚拟字符串名称{get;set;}
}
我使用具有以下覆盖的自动映射:

automapping.Override<Group>(m => m.HasManyToMany(_ => _.Items).AsSet());
automapping.Override(m=>m.hasmanytomy(=>.Items).AsSet());
我构造了一个组对象,并将它们添加到组对象中。使用
session.save(group)
保存组对象时,会发生异常:

NHibernate.TransientObject异常:对象引用未保存的临时实例-在刷新之前保存临时实例。类型:NhResearch.ManyToManyTests+项,实体:0项1 位于NHibernate.Engine.ForeignKeys.GetEntityIdentifierIfNotUnsave(字符串entityName、对象实体、ISessionImplementor会话)


我这里缺少什么?

您缺少级联设置

m => m.HasManyToMany(_ => _.Items).AsSet().Cascade.AllDeleteOrphan()
全部-如果要保存更新和删除项目

AllDeleteOrphan-与all相同,但也删除孤立项

SaveUpdate-保存或更新时级联

删除-仅级联已删除的项目


仅供参考,您可能还缺少表规范以及父键列和子键列。

SaveUpdate完成了这项工作。谢谢