У меня есть родительская модель 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 будет вставлен очень хорошо.
Почему я сталкиваюсь с этой ошибкой с допустимыми значениями для моего составного внешнего ключа