Задать вопрос
@bizir

ENTITY FRAMEWORK Fluent API как запретить создавать запись если она уже есть?

Есть 2 таблицы со связью многие ко многим
public class Movie
    {
        [Key]
        public int MovieId{ get; set; }
        [MaxLength(100)]
        public string Title{ get; set; }
        public List<Country> Countrys{ get; set; }
    }
    public class Country
    {
        [Key]
        public int CountryId { get; set; }
        [MaxLength(10)]
        public string Key { get; set; }
        public List<Movie> Movies { get; set; }
    }

Привязал их друг к другу через Fluent API вот так
modelBuilder.Entity<Cinema_Country>()
                .HasMany(c => c.Movies)
                .WithMany(c => c.Countrys)
                .Map(c =>
                {
                    c.ToTable("Cinema_CountryMovie");
                    c.MapRightKey("MovieId");
                    c.MapLeftKey("CountryId");
                });

Но при добавлении к таблице Movie таблицу Country и сохранении . Создается еще одна запись в Country. Как запретить добавлять записи в эту таблицу если запись уже существует?
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 1
sarapinit
@sarapinit Куратор тега C#
Точу водой камень
Это происходит потому что в трекере изменений EF нет информации о Country в момент сохранения.
Вам нужно "присоединить" существующие страны к контексту перед сохранением. Вот пример в официальных доках
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы