Ядро структуры сущностей, добавляющее запись и получающее «Оператор удаления конфликтует с ограничением ссылки ..» - PullRequest
0 голосов
/ 14 ноября 2018

Я использую 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.

Полагаю, мой главный вопрос почему структура сущностей пытается что-то удалить в процессе выполнения вставки?

Любое понимание, помощь или руководствобудет очень признателен, спасибо!

ОБНОВЛЕНИЕ: я исправил проблему, удалив посторонниеключевое ограничение в базе данных.Все еще остается вопрос о том, как я могу заставить его работать с этим ограничением.

...