у меня есть некоторые модели, как те ниже:EF Ядро возвращает нулевые отношения недо прямого доступа
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; }
}
и в OnModelCreating
из DBContext
я сделал отношения, подобные этим:
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);
теперь, когда я запрашиваю для Mutants, значение OriginalCode равно null:
, но как только я прошу для OriginalCode
с как ниже:
то OriginalCode
поле мутантов будет не нулевым:
В чем причина и как я могу это исправить?
TG.
Как вы могли догадаться, я хочу контролировать первое поведение. Но есть еще большой вопрос. Таким образом, вы упомянули, я должен прямо рассмотреть отношения, которые нужно заполнить, правда? – ConductedClever
Действительно. Вы должны указать каждый из них, который вы хотите включить, используя несколько методов 'Include' /' ThenInclude'.AFAIK есть некоторые планы сделать это автоматически в будущем, но на данный момент это единственный вариант. –
Как насчет угадывания, никто никогда не знает - например, посмотрите несколько вопросов перед вашим в теге EF Core - [Могу ли я остановить Entity Framework Core от заполнения моего результата частичными данными?] (Http://stackoverflow.com/questions/42310340/can-i-stop-entity-framework-core-from-populating-my-result-with-partial-data) :) –