我有Inspection
,每个Inspection
可以有一个InspectorInfo
和一个CoInspectorInfo
。这些是可选的,因此两个外键都可以为空。 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; }
}
但是当我添加迁移时,出现此错误:
无法确定类型为'Inspection'的导航属性'InspectorInfo.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
。
更新:
看起来(现在更清楚),它无法与Inspection
类上的单个Navigation属性一起返回到InspectorInfo
,因为它不知道使用哪个FK。