Я использую Entity Framework Core с .net core 2.1 и сталкиваюсь со странной периодически возникающей проблемой.
В моем случае у меня есть три таблицы с сущностями (упрощенно):
Table("Establishment")]
public class Establishment
{
public int Id {get; set;}
}
Table("ServiceUser")]
public class ServiceUser
{
public int Id {get; set;}
public string Firstname {get; set;}
public string Lastname {get; set;}
prop int ChangedBy {get; ;set} //The id of the current user account
}
Table("EstablishmentServiceUser")]
public class EstablishmentServiceUser
{
public int Id {get; set;}
public int EstablishmentId {get; set;}
public int ServiceUserId{get; set;}
public Establishment Establishment {get;set;}
public ServiceUser ServiceUser {get;set;}
}
Чтобы добавить нового EstablishmentServiceUser в код, я делаю что-то вроде этого:
var estabServiceUser = new EstablishmentServiceUser
{
establishmentId = 1
serviceuser.Firstname = "John",
serviceUser.Lastname = "Smith",
serviceUsers.ChangedBy = 1 //This is a user that definitely exists
}
_sqlContext.EstablishmentServiceUsers.Add(estabServiceUser);
_sqlContext.SaveChanges();
Пока это работает нормально, и в таблице ServiceUser создается новая запись с именем, фамилией и новымзапись создается в таблице creationServiceUser с записью, связывающей serviceUser с учреждением.
Внезапно я сталкиваюсь с ошибкой для одного пользователя (но не другого), когда код на некоторое время зависает, а затем выдает следующее исключение:
SqlException: The DELETE statement conflicted with the REFERENCE constraint
"FK_ServiceUser_EstablishmentAccount". The conflict occurred in database
"SafeSteps", table "dbo.ServiceUser", column 'ChangedBy'.
The statement has been terminated.
Полагаю, мой главный вопрос почему структура сущностей пытается что-то удалить в процессе выполнения вставки?
Любое понимание, помощь или руководствобудет очень признателен, спасибо!
ОБНОВЛЕНИЕ: я исправил проблему, удалив посторонниеключевое ограничение в базе данных.Все еще остается вопрос о том, как я могу заставить его работать с этим ограничением.