基于NHibernate的双连通有序树映射
我们需要使用NHibernate映射简单类:基于NHibernate的双连通有序树映射,nhibernate,orm,hbm,Nhibernate,Orm,Hbm,我们需要使用NHibernate映射简单类: public class CatalogItem { private IList<CatalogItem> children = new List<CatalogItem>(); public Guid Id { get; set; } public string Name { get; set; } public CatalogItem Parent { get; set; } pu
public class CatalogItem
{
private IList<CatalogItem> children = new List<CatalogItem>();
public Guid Id { get; set; }
public string Name { get; set; }
public CatalogItem Parent { get; set; }
public IList<CatalogItem> Children
{
get { return children; }
}
public bool IsRoot { get { return Parent == null; } }
public bool IsLeaf { get { return Children.Count == 0; } }
}
公共类目录项
{
private IList children=新列表();
公共Guid Id{get;set;}
公共字符串名称{get;set;}
公共CatalogItem父项{get;set;}
公营儿童
{
获取{返回子项;}
}
public bool IsRoot{get{return Parent==null;}}
public bool IsLeaf{get{return Children.Count==0;}
}
互联网上有一批关于这一主题的教程,但没有一本涵盖一点令人讨厌的细节:我们需要将订单保存在儿童收藏中。我们尝试了以下映射,但它导致了NHibernate抛出的奇怪的例外(“非静态方法需要目标”)
有人有什么想法吗?我不是专家,但是
在这个用法上对我来说很奇怪。您应该能够执行
,并且NHibernate将自动使用关联类的主键——在本例中为其本身
您可能还需要将列表设置为inverse=“true”
,因为该关系是双向的。[参见文档中的第6.8节。]我不是专家,但是
在这种用法中对我来说很奇怪。您应该能够执行
,并且NHibernate将自动使用关联类的主键——在本例中为其本身
您可能还需要将列表设置为
inverse=“true”
,因为该关系是双向的。[请参阅文档中的第6.8节。]当我编译代码时,会收到一条错误消息“在“CatalogItem”类中找不到属性“Children”的setter。当我编译代码时,会收到一条错误消息“在“CatalogItem”类中找不到属性“Children”的setter”。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Domain.Model" assembly="Domain">
<class name="CatalogItem" lazy="false">
<id name="Id" type="guid">
<generator class="guid" />
</id>
<property name="Name" />
<many-to-one name="Parent" class="CatalogItem" lazy="false" />
<list name="Children" cascade="all">
<key property-ref="Parent"/>
<index column="weight" type="Int32" />
<one-to-many not-found="exception" class="CatalogItem"/>
</list>
</class>
</hibernate-mapping>