我正在开发一个基于问题/答案的应用程序
我在db中有一个Post表:
然后,有“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; }
}
其中基本上有一个“问题” - 记住这只是db中的一个Post,ParentPostID为0,带有Answers列表(其中ParentPostID等于Question.ID ......或沿着这些行)< / p>
我的问题是 - 如何在流利的nHibernate中映射它?
答案 0 :(得分:1)
你可以使用Automapper for QuestionWithAnswers,但是Answers必须有一个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; }
}
如果问题有答案,你会得到它们,如果没有,你就不会。