2009-10-02 79 views
-2

我对NHibernate很新,并且遇到了让这种映射工作的问题。我正在使用NHibernate 2.1.0.GA和NHibernate.Mapping.Attributes 2.0。NHibernate - 映射来自同一个表的父/子一对多关联

我有一个表与自身作为父/子关系(t_Posts):

t_Posts 
------------------------ 
(PK) PostID bigint 
    DatePosted datetime 
    Body nvarchar(1000) 
(FK) ParentPostID bigint 

我想有一个类(POST)的属性(儿童)是一组子帖子。我为映射使用类属性并拥有此属性。

[Class(Table="t_Posts",Lazy=true)] 
public class Post 
{ 
    [Id(Name="PostId")] 
    public virtual long PostId { get; set; } 

    [Property(Column="DatePosted")] 
    public virtual DateTime DatePosted { get; set; } 

    [Property(Column="Body")] 
    public virtual string Body { get; set; } 

    [Property(Column="ParentID")] 
    public virtual long ParentId { get; set; } 

    [Set(0,Name="Children",Inverse=true,Cascade="all-delete-orphan", Lazy=true)] 
    [Key(1,Column="ParentId")] 
    [OneToMany(2,Class="Post")] 
    public virtual ISet<Post> Children { get; set; } 
} 

当我运行这个,但是,我得到异常“关联引用未映射的类:发布”。我不能在同一班上做这个吗?

回答

1

我明白了。我必须在OneToMany属性中使用完全限定的类名称。

[Set(0,Name="Children",Inverse=true,Cascade="all-delete-orphan", Lazy=true)] 
[Key(1,Column="ParentId")] 
[OneToMany(2,Class="MyProj.Domain.Post")] 
public virtual ISet<Post> Children { get; set; } 
+0

级联删除是否也起作用? – 2013-08-06 08:28:49