代码之家  ›  专栏  ›  技术社区  ›  Alex

在fluent nHibernate中映射实体集合

  •  0
  • Alex  · 技术社区  · 14 年前

    我正在开发一个基于问答的应用程序

    我在db中有一个Post表,内容如下:

    • 身份证件
    • 身体
    • 创建日期
    • AuthorName(如果用户未注册)
    • AutherEmail(如上所述)
    • PostType(如果有问题,则枚举-1,如果有答复,则枚举-2)
    • 显示(位字段)

    然后,还有一个“PostBase”,它是一个抽象类(它有问答共同的属性,如下所示) 然后我有一个内部的“Post”类,它从PostBase派生,因此具有上面列出的所有属性。

    然后有一个问题课和一个答案课。

    两者都使用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中的一个帖子,parentposted为0,有一个答案列表(其中parentposted等于Question.ID。。。或者沿着这些路线)

    我的问题是-我该如何用流利的nHibernate来映射这个?

    1 回复  |  直到 14 年前
        1
  •  1
  •   rebelliard    14 年前

    您可以使用Automapper处理QuestionWithAnswers,但答案必须有IList,而不是IEnumerable:

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

    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; }
    }