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 происходит вылетает ошибка. этот