Entity Framework Core Parent Дочерние элементы в той же модели, дочерний узел возвращает ноль - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть родительское и дочернее свойство внутри одной доменной модели.

public class TestModel
{
    public int ParentID { get; set; }
    public int ID{ get; set; }
    public string Name{ get; set; }
    public virtual TestModel parent { get; set; }
    public virtual List<TestModel> children { get; set; }
}

Когда я пишу OnModelCreating событие, как показано ниже:

builder.Entity<TestModel>().HasOne(b => b.parent).WithMany(a => a.children).HasForeignKey(b => b.ID);

В режиме отладки дочерний узел возвращает иерархический то же самое, и я получаю 'Обнаружение собственной ссылки l oop для свойства' parent 'с ошибкой типа TestModel' в JsonConvert.SerializeObject.

Когда я изменяю событие OnModelCreating, как показано ниже:

builder.Entity<TestModel>().HasOne(b => b.parent).WithMany(a => a.children).HasForeignKey(b => b.ParentID);

Тогда свойство children возвращает ноль. Как я могу решить эту проблему? Как правильно загрузить свойство children?

Надеюсь, кто-нибудь мне поможет.

PS: TestModel не в каком-либо контексте, поэтому я не могу включить. Я создаю запрос sql и использую From Sql ()

1 Ответ

2 голосов
/ 20 февраля 2020

Второй правильный, но я подозреваю, что при загрузке вы не с нетерпением выбираете детей. Попробуйте это:

var one = context.Set<TestModel>().Include(x => x.children).FirstOrDefault();

Другой вариант - использовать отложенную загрузку. Подробнее здесь: https://docs.microsoft.com/en-us/ef/core/querying/related-data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...