EF Core - Как настроить многие ко многим для того же объекта, который уже имеет отношение один ко многим - PullRequest
0 голосов
/ 09 февраля 2019

В настоящее время у меня есть отношение один-ко-многим между Post и Comment.Один Post может содержать несколько Comments.Я хочу создать отношение «многие ко многим» для комментариев.У меня также есть отношения один-ко-многим между User и Comment.

Т.е. каждый Comment должен содержать коллекцию Comment.Например, пользователь может комментировать комментарий другого пользователя.Я хочу сохранить порядок комментариев, чтобы отображать их в правильном порядке.

public class Comment
    {
        [Key]
        public Guid Id { get; set; }

        [Required, MaxLength(1000)]
        public string Message { get; set; }

        [Required]
        public DateTime Created { get; set; }

        //need to set this up
        public ICollection<Comment> ChildComments { get; set; }

        [Required]
        public Guid PostId { get; set; }

        [Required]
        public Post CommentForPost { get; set; }

        [Required]
        public Guid UserId { get; set; }

        [Required]
        public User CreatedBy { get; set; }
    }

Как правильно установить эти отношения, сохраняя при этом отношения «один ко многим», которые у меня есть сдругие лицаДолжен ли я в конечном итоге создать таблицу соединений?Я не совсем уверен, как мне установить отношения EF для достижения вышеописанного сценария.

1 Ответ

0 голосов
/ 09 февраля 2019

каждый комментарий должен содержать коллекцию комментариев

public class Comment
{
 [Key]
        public Guid Id { get; set; }

        [Required, MaxLength(1000)]
        public string Message { get; set; }

        [Required]
        public DateTime Created { get; set; }

        //need to set this up
        public ICollection<Comment> ChildComments { get; set; }

        [Required]
        public Guid PostId { get; set; }

        [Required]
        public Post CommentForPost { get; set; }

        [Required]
        public Guid UserId { get; set; }

        [Required]
        public User CreatedBy { get; set; }

   //this comment can be a child comment for (if is set) 
   // ParentCommentId is optional
           public string ParentCommentId {get;set;}
           public Comment ParentComment {get;set;}    
   //this comment can have many comments
           public ICollection<Comment> ChildComments {get;set;}

}

, затем для конфигурации.Вы можете сделать:

 builder.Entity<Comment>()
            .HasOne(x => x.ParentComment)
            .WithMany(x => x.ChildComments)
            .HasForeignKey(x => x.ParentCommentId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...