Определение отношения многих ко многим - PullRequest
0 голосов
/ 07 апреля 2020

Я изо всех сил пытаюсь определить следующие отношения:

  1. У пользователя может быть МНОГИЕ сообщения.
  2. Пользователь может принадлежать к соавтору МНОГИХ сообщений.
  3. Сообщение имеет ОДНОГО владельца.
  4. Сообщение может иметь МНОГИЕ пользователи (то есть соавторы). (Владелец может добавить их позже)
    Class User(){
       public Guid Id{ get; set; }
    }

    class UserPost(){
       public Guid UserId { get; set; }
       public User User { get; set; }

       public Guid PostId { get; set; }
       public { get; set; }
    }

    class Post(){
       public IList<UserPost> UserPost{ get; set; }
       public Guid AuthorId { get; set; }
       public User Author { get; set; }
       public string Title { get; set; }
    }

Является ли мой код правильным представлением отношений?

1 Ответ

0 голосов
/ 07 апреля 2020

У каждого из них должны быть отдельные отношения. Это означает, что вам нужно что-то вроде:

public class User
{
    public ICollection<Post> Posts { get; set; }
    public ICollection<PostCollaborator> CollaboratingPosts { get; set; }
}

public class Post
{
    public User Owner { get; set; }
    public ICollection<PostCollaborator> Collaborators { get; set; }
}

public class PostCollaborator
{
    public Post Post { get; set; }
    public User Collaborator { get; set; }
}

Другими словами, отношение владельца сообщения на самом деле один-ко-многим. Пользователь может иметь много собственных сообщений, но у каждого сообщения может быть только один владелец. Отношение «Сотрудник после публикации» - это отношение «многие ко многим», для которого требуется объединение PostCollaborator.

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...