Связанные данные - Нет Коре 2.1

Разрабатывая WebAPI под NetCore в Вашей версии 2.1 и EFCore, где у меня есть следующая связь организаций.

public partial class A
{ 
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public string IdA { get; set; }


    public virtual ICollection<B> B{ get; set; }     
}

public partial class B
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public string IdB { get; set; }

    public virtual ICollection<C> C{ get; set; }
}

public partial class C
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public string IdC { get; set; }
}

Итак, в той же консультации в контекст данных я хочу получить данные C, но эта коллекция всегда null под следующей консультацией.

var consulta = await _context.as.Include(z => z.A).ThenInclude(z=>z.B.Select(z=>z.C)).FirstOrDefaultAsync(z => z.IdA == id);

Поскольку они могли бы получать данные о свойстве "Икольектион К" посредством консультации этого стиля.

Спасибо.

0
задан 03.05.2019, 17:01
1 ответ

Кажется, что ты вооружил и конфигурировал плохо связи классов... в общем этот тип ошибок по этой причине.

ты Можешь снабжать ее jerarquГ - в классами следующей формы

public class ClassA
{
  public int Id { get; set; }

  public List<ClassB> B{ get; set; }     
}

public class ClassB
{
  public int Id { get; set; }
  public ClassA A { get; set; }

  public List<ClassC> C{ get; set; } 
}

public class ClassC
{
  public int { get; set; }
  public ClassB B { get; set; }
}

Каждая - одна relaciГіn с одного до многих и fГ-jate, что в каждом нижнем уровне есть ссылка на начальника.

Потом в контексте ты показываешь связи:

modelBuilder.Entity<ClassA>().HasMany(s => s.B).WithOne(s => s.A);
modelBuilder.Entity<ClassB>().HasMany(s => s.C).WithOne(s => s.B);

И в конце концов ты реализуешь консультацию:

List<ClassA> as = context.ClassesA
  .Include(x => x.B)
    .ThenInclude(x => x.C)
  .ToList();

С другой стороны, который является твоей необходимостью иметь классы организации, которых было бы parcial, primary key типа string и ICollection как virtual?

Энтитифрамеворк Коре берет свойства такой Id как PK, произведя таблицу в Migration из-за default. Только необходимо использовать [key], когда не остается estandard, но я рекомендую использовать это, чтобы облегчать содержание в будущее (возможно из-за других команд).

4
ответ дан 02.12.2019, 08:01

Теги

Похожие вопросы