Entity Framework Core Nullable FK没有得到记录



我有一个OrderHeader表和OrderLines表。我也有一个速率表。OrderHeader和OrderLines都可以有速率。这个Rate表设置为:

RateId
RateValue
OrderHeaderId
OrderLineId

所以如果我们添加标题率OrderHeaderId被填充,OrderLineId为空。当添加行率时,情况正好相反。

My OnModelCreating() has:

modelBuilder.Entity<Rate>(entity =>
{
entity.HasOne(d => d.OrderHeader)
.WithMany(p => p.Rates)
.HasForeignKey(d => d.OrderHeaderId)
.HasContraintName("FK1")
.IsRequired(false);
entity.HasOne(d => d.OrderLines)
.WithMany(p => p.Rates)
.HasForeignKey(d => d. OrderLineId)
.HasContraintName("FK2")
.IsRequired(false);
}

当我查询OrderLine记录时,rate中有0条记录,但在DB中有2条记录。

我真的不确定我还应该找什么。我认为。isrequired (false)会修复这个问题,因为在rate表中,那些FK可以有空值,但它没有。

相关行仅在您请求时才加载,否则查询单个实体实例可能会将整个数据库加载到内存中。读取EF Core加载相关数据

Rate和OrderLines之间的FK应该是on (OrderHeaderId,OrderLineId),以确保Rate的OrderLines都属于Rate的OrderHeader。出于类似的原因,OrderLines的主键也应该是(OrderHeaderId,OrderLineId)。

最新更新