SqlException: оператор MERGE конфликтует с ограничением FOREIGN KEY - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть база данных, содержащая две таблицы, Книги и Пользователи, с отношением один ко многим. Когда я применил начальную миграцию, содержащую только Книги, она работала нормально. Когда я добавил и применил новую миграцию с изменениями пользователя, я получаю это исключение при попытке добавить объекты в базу данных:

"SqlException: оператор MERGE конфликтует с ограничением FOREIGN KEY" FK_Books_Users_UserId " Конфликт произошел в базе данных "Library.Database", таблице "dbo.Users", столбце "UserId" "

Модель User имеет список книг:

public ICollection<Book> BooksList { get; } = new List<Book>();

Модель Book имеет один User и UserId:

public int? UserId { get; set; }
public User User { get; set; }

Я попытался добавить это в контекст базы данных безуспешно:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
        modelBuilder.Entity<User>()
            .HasMany(u => u.BooksList)
            .WithOne(b => b.User);
}

Две таблицы выглядят так после последней примененной миграции:

CREATE TABLE [dbo].[Books] 
(
    [BookId]        INT           IDENTITY (1, 1) NOT NULL,
    [IsbnNumber]    NVARCHAR(MAX) NOT NULL,
    [Title]         NVARCHAR(MAX) NOT NULL,
    [Publisher]     NVARCHAR(MAX) NOT NULL,
    [PublishedDate] DATETIME2(7)  NOT NULL,
    [Pages]         INT           NOT NULL,
    [Loaned]        BIT           NOT NULL,
    [CoverImageUrl] NVARCHAR(MAX) NULL,
    [UserId]        INT           NULL,

    CONSTRAINT [PK_Books] 
        PRIMARY KEY CLUSTERED ([BookId] ASC),
    CONSTRAINT [FK_Books_Users_UserId] 
        FOREIGN KEY ([UserId]) REFERENCES [dbo].[Users] ([UserId])
)

CREATE TABLE [dbo].[Users] 
(
    [UserId]       INT           IDENTITY (1, 1) NOT NULL,
    [FirstName]    NVARCHAR(MAX) NOT NULL,
    [LastName]     NVARCHAR(MAX) NOT NULL,
    [DateOfBirth]  DATETIME2(7)  NOT NULL,
    [Username]     NVARCHAR(MAX) NOT NULL,
    [PasswordHash] NVARCHAR(MAX) NOT NULL,
    [Email]        NVARCHAR(MAX) NOT NULL,

    CONSTRAINT [PK_Users] 
        PRIMARY KEY CLUSTERED ([UserId] ASC)
)

В базе данных нет существующих данных. Я удалил текущий проект миграции и сделал новый без удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...