Entity Framework Core 2.1 Добавление связанных данных с помощью составного внешнего ключа - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть родительская модель InspectionData с составным первичным ключом для двух других таблиц (Component и Inspection) и дочерняя модель WrittenFindings:

public class InspectionData
{
    public int InspectionId { get; set; }
    public virtual Inspection Inspection { get; set; }
    public int? ComponentId { get; set; }
    public virtual Component Component { get; set; }

    public virtual WrittenFinding WrittenFinding { get; set; }
}

public class WrittenFinding
{
    public int Id { get; set; }
    public int? InspectionId { get; set; }
    public int? ComponentId { get; set; }
    public virtual InspectionData InspectionData { get; set; }

    [Required]
    public string Text { get; set; }
}

WrittenFinding настраивается через FluentApi здесь:

modelBuilder.Entity<WrittenFinding>()
            .HasOne(wf => wf.InspectionData)
            .WithOne(id => id.WrittenFinding)
            .HasForeignKey<WrittenFinding>(wf => new { wf.InspectionId, wf.ComponentId })
            .OnDelete(DeleteBehavior.Cascade);

Я пытаюсь добавить их в базу данных следующим образом:

        _context.InspectionData.Add(inspectionData);
        await _context.SaveChangesAsync();

Но я сталкиваюсь с ограничением внешнего ключа при выполнении:

SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_WrittenFinding_InspectionData_InspectionId_ComponentId". The conflict occurred in database "InstantBSIContext-26452145-dc4a-4073-ae99-96b88874434d", table "dbo.InspectionData".

Это то, чтоДанные, которые я добавляю, выглядят так:

InspectionId: 3
ComponentId: 1
WrittenFinding[InspectionId]: 3
WrittenFinding[ComponentId]: 1
WrittenFinding[Text]: <p><br></p>

Я знаю, что в базе данных есть компонент с идентификатором 1 и проверкой с идентификатором 3, и я знаю, что отправляю и получаю данныеправильно из-за отладки.

Если я удаляю WrittenFinding из отправляемых данных, то InspectionData будет вставлен очень хорошо.

Почему я сталкиваюсь с этой ошибкой с допустимыми значениями для моего составного внешнего ключа

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