Entity Framework Core отношение один ко многим

вопрос следующий, грубо говоря есть две сущности

public class Gender
{       
    public int GenderId { get; set; }
    public string Name { get; set; }

    public List<Client> Clients { get; set; } = new List<Client>();
}
 public class Client
{
    public int ClientID { get; set; }
    public string Surname { get; set; }
    public string Name { get; set; }
    public int? GenderId { get; set; }
    public Gender Gender { get; set; }}

На форме в ComboBox я загружаю Gender, далее для пользователя я выбираю загруженный Gender из ComboBox и присваиваю примерно так (client.Gender = gender), заполняю информацию о пользователе, далее пытаюсь сохранить, но при сохранении вылезает следующая ошибка SqliteException: SQLite Error 19: 'UNIQUE constraint failed: Genders.GenderId'. Я так понял, это из-за того, что Gender я загружаю в одном месте, далее это соединение закрывается, а для сохранения я открываю новое подключение. Вот например:

public void SaveDatabase()
{ using (DataContext db = new DataContext())
  { 
    Gender gender = db.Genders.FirstOrDefault();
    client.Gender = gender;
  }
  using (DataContext db = new DataContext())
  {
   db.Clients.Add(client);
   db.SaveChanges();
   }
}

При варианте выше вылетает ошибка, но если использовать вариант ниже - все хорошо сохраняется, но вариант ниже использовать я не могу, т.к. загружаю в ComboBox список Gender.

using(DataContext db = new DataContext()){
    Gender gender = db.Genders.FirstOrDefault();
   client.Gender = gender;
   db.Clients.Add(client);
   db.SaveChanges();
}

Пытался объяснить как мог). Грубо говоря, мне надо Gender загрузить из базы в переменную, закрыть подключение, далее присвоить Gender клиенту Client и сохранить клиента в БД, но как раз из-за того что это все в разных DataContext происходит вылетает ошибка. этот


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