Как привязать Comment к конкретному Message

Пишу веб приложение использую Fluent NHibernate. Всё управляется котроллером, а запросы обрабатывают хендлеры. Это гостевая книга, в которой можно оставить сообщения и в каждом сообщении можно оставить комментарий. Приложение общается через API. Вопрос: как добавить коментарий к каждому коменту? Вот поля Message:


namespace TestGuestbook.Data
{
    [Guid("6D07675D-1F17-482D-A576-2DDBE5C8C7DF")]
    [CJE.Serializable(CJE.Serializable.Politics.AllExceptExcluded)]
    public class Message : CJE.ISerializable
    {
        public Guid ID { get; set; }
        public DateTime Created { get; set; }
        public string Author { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }

        public IList<Data.Comment> Comments { get; set; }
        public int CommentsCount { get; set; }
        

    }
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestGuestbook.DB
{
    public class Message
    {
        public virtual Guid ID { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual string Author { get; set; }
        public virtual string Title { get; set; }
        public virtual string Content { get; set; }


        public virtual IList<Comment> Comments { get; set; }
        public virtual IList<Rating> Ratings { get; set; }

        public Message() { }
        public Message(Data.Message source)
        {
            this.ID = source.ID;
            this.Created = source.Created;
            this.Author = source.Author;
            this.Title = source.Title;
            this.Content = source.Content;
        }

        public virtual Data.Message ToData(bool withComments, bool withRating)
        {
            return new Data.Message()
            {
                ID = this.ID,
                Created = this.Created,
                Author = this.Author,
                Title = this.Title,
                Content = this.Content,

                Comments = (withComments && this.Comments != null && NHibernate.NHibernateUtil.IsInitialized(this.Comments)) ? this.Comments.Select(x => x.ToData()).ToList() : new List<Data.Comment>(),
                CommentsCount = (this.Comments != null && NHibernate.NHibernateUtil.IsInitialized(this.Comments)) ? this.Comments.Count : -1,
            };
        }
    }
}

Все эти поля "замаплены". Вот их поля:

namespace TestGuestbook.DB.Mapping
{
    public class MessageMap : ClassMap<Message>
    {
        public MessageMap()
        {
            Id(x => x.ID).GeneratedBy.GuidComb();
            Map(x => x.Created);
            Map(x => x.Author);
            Map(x => x.Title);
            Map(x => x.Content);

            HasMany(x => x.Comments).KeyColumns.Add("Message_id").Inverse().Cascade.All();
            HasMany(x => x.Ratings).KeyColumns.Add("Message_id").Cascade.AllDeleteOrphan();
        }

Вот поля Comment

using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace TestGuestbook.Data
{
    [CJE.Serializable(CJE.Serializable.Politics.AllExceptExcluded)]
    [Guid("6D07675D-1F17-482D-A576-2DDBE5C8C7DF")]
    public class Comment : CJE.ISerializable
    {
        public Guid ID { get; set; }
        public DateTime Created { get; set; }
        public string Author { get; set; }
        public string Content { get; set; }

        public Message Message { get; set; }
    }
}
public class Comment
    {
        public virtual string Author { get; set; }
        public virtual string Content { get; set; }
        public virtual DateTime Created { get; set; }

        public virtual Guid ID { get; set; }

        public virtual Message Message { get; set; }


        public Comment() { }
        public Comment(Data.Comment source)
        {
            this.ID = source.ID;
            this.Author = source.Author;
            this.Content = source.Content;
            this.Created = source.Created;
            

        }
    }

namespace TestGuestbook.DB.Mapping
{
    public class CommentMap : ClassMap<Comment>
    {
        public CommentMap()
        {
            Id(x => x.ID).GeneratedBy.Guid();
            Map(x => x.Content);
            Map(x => x.Author);
            References(x => x.Message).Column("Message_id").Cascade.All();
        }
    }
}

Я получаю данные с помощью форм. Как получить ID сообщения, чтобы добавить комментарий? Вот форма Comment

namespace TestGuestbook.Form
{
    public class Comment : CJE.Form.FormData
    {
        public Comment(CJE.Form.DataRaw data) : base(data, true) { }
        [CJE.Form.Value("ID", typeof(CJE.Form.Values.GuidParser))]
        public Guid ID;
        [CJE.Form.Value("Created", typeof(CJE.Form.Values.DateTimeParser))]
        public DateTime Created;

        [CJE.Form.Value("Author", typeof(CJE.Form.Values.StringParser))]
        public string Author;

        [CJE.Form.Value("Content", typeof(CJE.Form.Values.StringParser))]
        public string Content;
        [CJE.Form.Value("Message_id", typeof(CJE.Form.Value))]
        public Message MessageID;
        public Data.Comment ToData()
        {
            return new Data.Comment()
            {
                ID = this.ID,
                Created = this.Created,
                Author = this.Author,
                Content = this.Content,
                
            };
        }
    }
}

Вот контроллер, который добавляет комментарий если ID = null, в противном случае редактирует тот, который имеется:

ublic static Data.Comment SaveComment(IDBSession dbs, Data.Comment comment, Guid messageID)
        {
            using (NHibernate.ITransaction transaction = dbs.Session.BeginTransaction())
            {

                DB.Comment dbComment = null;



                if (comment.ID != Guid.Empty) dbComment = dbs.Session.Get<DB.Comment>(comment.ID);


                if (dbComment == null)
                {
                    
                    dbComment = new DB.Comment(comment);
                    dbComment.Created = DateTime.UtcNow;
                    
                }
                else
                {
                    dbComment.Author = comment.Author;
                    dbComment.Content = comment.Content;

                }

                dbs.Session.SaveOrUpdate(dbComment);
                comment = dbComment.ToData();
                transaction.Commit();
            }
            return comment;
        }

Ответы (0 шт):