我有一個像某些型號的波紋管:EF核心返回null關係,直到直達
public class Mutant
{
public long Id { get; set; }
...
// Relations
public long OriginalCodeId { get; set; }
public virtual OriginalCode OriginalCode { get; set; }
public int DifficultyLevelId { get; set; }
public virtual DifficultyLevel DifficultyLevel { get; set; }
}
和
public class OriginalCode
{
public long Id { get; set; }
...
// Relations
public virtual List<Mutant> Mutants { get; set; }
public virtual List<OriginalCodeInputParameter> OriginalCodeInputParameters { get; set; }
}
,並在DBContext
的OnModelCreating
我做了這樣的關係:
modelBuilder.Entity<Mutant>()
.HasOne(m => m.OriginalCode)
.WithMany(oc => oc.Mutants)
.HasForeignKey(m => m.OriginalCodeId)
.OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.Restrict);
modelBuilder.Entity<Mutant>()
.HasOne(m => m.DifficultyLevel)
.WithMany(dl => dl.Mutants)
.HasForeignKey(m => m.DifficultyLevelId)
.OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.Restrict);
現在當我要求突變體時,OriginalCode爲空:
,但只要我請求OriginalCode
就像波紋管:
那麼突變的OriginalCode
領域將是不爲空:
是什麼原因,我該如何解決?
TG。
正如你所猜想的,我想控制第一個行爲。但仍然有一個很大的問題。你提到的這種方式,我應該明確地解決待填補的關係,是真的嗎? – ConductedClever
確實。你必須用幾個'Include' /'ThenInclude'方法來指定你想要「包含」的每一個。AFAIK有一些計劃將來會自動進行此操作,但現在這是唯一的選擇。 –
猜猜怎麼樣,從來不知道 - 例如在你的EF核心標籤中看到一些問題 - [我可以阻止實體框架核心使用部分數據填充我的結果嗎?](http://stackoverflow.com/questions/42310340/can-i-stop-entity-framework-core-from-populating-my-result-with-partial-data):) –