У меня есть Inspection
, каждый Inspection
может иметь InspectorInfo
и CoInspectorInfo
. Они являются необязательными, поэтому оба внешних ключа могут иметь значение NULL. Записи InspectorInfo
не используются повторно, для каждого Inspection
вставляются новые. Я пытаюсь построить это так:
public class Inspection
{
public Guid InspectionId { get; set; }
public Guid? InspectorInfoId { get; set; }
public Guid? CoInspectorInfoId { get; set; }
[ForeignKey(nameof(InspectorInfoId))]
public virtual InspectorInfo InspectorInfo { get; set; }
[ForeignKey(nameof(CoInspectorInfoId))]
public virtual InspectorInfo CoInspectorInfo { get; set; }
}
public class InspectorInfo
{
public Guid InspectorInfoId { get; set; }
public string Name { get; set; }
public DateTime ApprovedOn { get; set; }
public virtual Inspection Inspection { get; set; }
}
Но когда я добавляю Миграцию, я получаю эту ошибку:
Невозможно определить отношение, представленное свойством навигации 'InspectorInfo.Inspection' типа 'Inspection'.
Я пытался добавить это к своему DbContext
:
modelBuilder.Entity<InspectorInfo>(entity =>
{
entity.HasOne(d => d.Inspection)
.WithOne(p => p.InspectorInfo)
.HasForeignKey<Inspection>(d => d.InspectorInfoId);
entity.HasOne(d => d.Inspection)
.WithOne(p => p.CoInspectorInfo)
.HasForeignKey<Inspection>(d => d.CoInspectorInfoId);
});
Но потом я получил эту ошибку:
Невозможно создать связь между InspectorInfo.Inspection и Inspection.CoInspectorInfo, так как между InspectorInfo.Inspection и Inspection.InspectorInfo уже есть связь. Свойства навигации могут участвовать только в одном отношении.
Это имеет смысл, поскольку я пытался добавить несколько .HasOne
отношений в одну InspectorInfo
сущность. Однако я не знаю, как еще его определить, поскольку Inspection
будет иметь две отдельные записи InspectorInfo
, каждая из которых применяется к одному и тому же Inspection
.
Обновление:
Похоже, и теперь стало понятнее, что он просто не будет работать с одним свойством Navigation обратно в Inspection
класса InspectorInfo
, поскольку он не будет знать, какой FK использовать.