2010-07-29 98 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; } 
} 

如果問題有答案,你會得到它們,如果沒有,你不會。