2010-07-29 87 views
0

映射实体的集合我正在开发一个问题/答案基于应用在功能NHibernate

我有一个帖子表中的线沿线的分贝:

  • ID
  • 标题
  • 身体
  • dateCreated会
  • 的AuthorID
  • AUTHORNAME(万一用户未注册)
  • AutherEmail(如上)
  • PostType(枚举 - 1,如果问题,2如果回复)
  • 展(比特字段)

然后,有“PostBase” - 这是一个抽象类(它具有以下列出的问题和答案共同的属性) 然后我有一个内部“Post”类,它从PostBase开始下降,因此具有上面列出的所有属性。

然后有一个Question类和一个Answer类。

两者都使用Post作为基类。

这里是类:

public abstract class PostBase 
{ 
    { 
     get { return postCreatorEmail; } 
     //todo: add email address validation here? 
     set { postCreatorEmail = value; } 
    }  private IList<Attachment> attachments = new List<Attachment>(); 

    public PostBase() 
    { 
     //init logic here 
    } 

    public virtual DateTime DateCreated { get; set; } 

    public virtual string ID { get; set; } 

    public virtual string Body { get; set; } 

    public virtual DateTime DateLastModified { get; set; } 

    public virtual string PostCreatorName { get; set; } 

    public virtual string PostCreatorEmail { get; set; } 

    public virtual int PostCreatorID { get; set; } 

    public virtual PostType PostType { get; set; } 

    public virtual PostSource PostSource { get; set; } 

    public virtual bool Show { get; set; } 

    public IEnumerable<Attachment> Attachments { get { return attachments; } } 
} 

internal class Post : PostBase 
{ 
    public virtual List<string> Tags { get; set; } 

    public virtual string Title { get; set; } 

    public virtual string ParentPostID { get; set; } 
} 

问:

public class Question : PostBase 
{ 
    public Question() 
    { 
     tags = new List<string>(); 
    } 

    public string Title { get; set; } 
    public List<string> Tags { get { return tags; } } 

    public int NumberOfReplies { get; set; } 
} 

答:

public class Answer : PostBase 
{ 
    public string QuestionID { get; set; } 
} 

我用automapper映射到/自答和邮政或问题和邮政

我想要做的,就是创建下面的类:

public class QuestionWithAnswers 
{ 
    public Question Question { get; set; } 
    public IEnumerable<Answer> Answers { get; set; } 
} 

这基本上有一个“问题” - 请记住,这只是一个Post中的数据库,ParentPostID为0,并有一个答案列表(其中ParentPostID等于Question.ID ...或沿着这些行)

我的问题是 - 我该如何映射这在流利的nHibernate中?

回答

1

你可以使用Automapper为QuestionWithAnswers,但答案必须有一个IList,而不是一个IEnumerable:

public class QuestionWithAnswers 
{ 
    public virtual Question Question { get; set; } 
    public virtual IList<Answer> Answers { get; set; } 
} 

我不明白的是QuestionWithAnswers的存在,当下面的(我认为)应该做:

public class Question : PostBase 
{ 
    public virtual string Title { get; set; } 
    public virtual List<string> Tags { get { return tags; } } 
    public virtual int NumberOfReplies { get; set; } 
    public virtual IList<Answer> Answers { get; set; } 
} 

如果问题有答案,你会得到它们,如果没有,你不会。