C # Entity Framework Добавление в таблицу «многие ко многим» - PullRequest
0 голосов
/ 05 февраля 2019

Это хорошая практика для вставки в таблицу «многие ко многим»?

user = new User
        {
            Id = userId,
            UserName = username,
            FirstName = firstName,
            LastName = lastName,
            UsersBooks = new List<UsersBooks>()
        };

        book = new Book
        {
            Title = "randomTitle2",
            Genre = "randomGenre2",
            UsersBooks = new List<UsersBooks>()
        };

        usersBooks = new UsersBooks
        {
            User = user,
            Book = book
        };

И наконец я добавляю ее в контекст

actContext.UsersBooks.AddAsync(usersBooks);

Итак, у меня есть этоКоллекция UsersBooks в каждом из классов - user & book.У одного пользователя может быть много книг, и одна книга может быть приобретена многими пользователями (скажем, копии Гарри Потера).Так должен ли я каждый раз создавать новую

  • usersBook и добавлять ее при каждой передаче пользователя и книги?Потому что я вижу, что после этого книга добавляется в соответствующую таблицу, и это правильно.Может быть, я спрашиваю, есть ли лучший способ с точки зрения наиболее часто используемых опытных разработчиков

Ответы [ 2 ]

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

С EF6 у вас есть две опции:

1) Поскольку EF6 поддерживает готовые отношения многие-ко-многим, вы можете использовать эту функцию(что отмечено в комментарии vasily.sib).

Плюсы : ваши модели и код выглядят чище без лишней модели (UsersBooks)

Минусы : это не гибкий способ.В будущем вам может понадобиться добавить дополнительные свойства в таблицу отношений.Этот подход не позволяет ему

2) Обрабатывать отношение «многие ко многим» с двумя реалиями «один ко многим» (как вы это сделали)

Плюсы : вы можете добавить любые дополнительные свойства к этому отношению.Это гибкий подход

Минусы : ваш код всегда должен работать с еще одной моделью (UsersBooks)

Итак, если вы обрабатываете достаточно простой сценарий, тоВы можете пойти с первым подходом.В противном случае вам нужно учитывать второе.

Кстати, в настоящее время EF core не поддерживает отношение «многие ко многим»

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

Вам не нужно вставлять непосредственно в таблицу UsersBooks.

После обновления списка users в book или списка books в user отношения(в UsersBooks) обновится автоматически.

На самом деле вам не нужно объявлять модель UsersBooks для отношения многие-ко-многим .Если вы объявите ICollection<User> в вашей Book Code First модели, а также объявите ICollection<Book> в модели User, таблица UsersBooks автоматически создастся в базе данных с помощью EntityFramework .

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