in Include를 사용하여 관련 데이터 엔티티 ef Core 3.1로드

압둘 하디 |

여러 수준에서 데이터를로드하려면 내 프로젝트를 dotnet core 3.1로 업데이트 한 후 include를 사용하면 작동하지 않으며 네 번째 수준은 항상 null입니다.

var oldMethod = _depositRepository.All()
                    .Include(n => n.StudentStatus.Student.Person.Gender)

ThenInclude를 사용해보십시오

var newMethod = _depositRepository.All()
                    .Include(n => n.StudentStatus)
                        .ThenInclude(s => s.Student)
                            .ThenInclude(p => p.Person)
                                .ThenInclude(g => g.Gender)

두 가지 방법 모두 Gender항상null

public IQueryable<T> All()
{
    return DbSet.AsNoTracking().AsQueryable();
}

이 튜토리얼을 따릅니다. 관련 데이터로드

편집 1 : 내 코드 중 일부

public class IEntity<IId>
{
    public IId Id { get; set; }
    public string Name { get; set; }
}

public class Gender : IEntity<byte>
{ 
}

public class Person: IEntity<int>
{
    public byte GenderId { get; set; }
    public virtual Gender Gender { get; set; }
}

public class Student : IEntity<int>
{
public int PersonId { get; set; }
public virtual Person Person { get; set; }
}

public class StudentStatus : IEntity<int>
{
    public int StudentId { get; set; }
    public virtual Student Student { get; set; }
}

public class Deposit : IEntity<int>
{
    public int StudentStatusId { get; set; }
    public StudentStatus StudentStatus { get; set; }
}
public interface IRepository<T, IId>
        where T : IEntity<IId>
{
    IQueryable<T> All();
}
public class EfRepository<T, IId> : IRepository<T, IId>
        where T : IEntity<IId>
{
    private readonly UniversityDbContext _dbContext;

    public EfRepository(UniversityDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    private DbSet<T> DbSet => _dbContext.Set<T>();

    public IQueryable<T> All()
    {
        return DbSet.AsNoTracking().AsQueryable();
    }

public class FinancialController : Controller
{
    private readonly IRepository<Deposit, int> _depositRepository;

    public FinancialController(IRepository<Deposit, int>)
    {
        _depositRepository = depositRepository;
    }

    public IActionResult GetStatistic()
    {
        var model= _depositRepository.All()
                        .Include(n => n.StudentStatus)
                            .ThenInclude(s => s.Student)
                                .ThenInclude(p => p.Person)
                                    .ThenInclude(g => g.Gender).ToList();
        return Json(model);
    }
}

디버그 창

압둘 하디 |

나는 당신 ThenInclude이 3 단계 로 얼마나 깊이 갈 수 있는지에 대한 제한이 있다고 결론을 내립니다 . 그래서 나는 객체 를 얻기 위해 호출 _genderRepository하고 전달 GenderId하여 문제를 Gender해결하지만 이것이 최선의 해결책이라고 생각하지 않지만 sql코드를 작성하는 것보다 쉽습니다 .

var newMethod = _depositRepository.All()
                    .Include(n => n.StudentStatus)
                        .ThenInclude(s => s.Student)
                            .ThenInclude(p => p.Person)
                                .ThenInclude(g => g.Gender)
                     .Select(n=>new {
                                      ...
                                      Gender=_genderRepository.Find(k=>k.Id==n.StudentStatus.Student.Person.GenderId)
                                     }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

관련 엔터티의 명시 적로드와 함께 'AsNoTracking'메서드를 사용하여 EF Core에 엔터티를로드하는 방법

분류에서Dev

EF Core 3.1 : 즉시로드를 사용하여 관련 엔터티를로드 할 때 목록 탐색 속성을 초기화해야합니까?

분류에서Dev

EF Core 3.1을 사용하여 관련 데이터로드

분류에서Dev

EF Eager는 관련 엔터티에서 관련 엔터티를로드합니다.

분류에서Dev

EF에서 관련 엔터티를 업데이트하는 방법 (코드 우선)

분류에서Dev

Entity Framework 5-Include를 사용하여 관련 엔터티를로드하는 필터 적용

분류에서Dev

Entity Framework 5-Include를 사용하여 관련 엔터티를로드하는 필터 적용

분류에서Dev

EntityFramework를 사용하여 리포지토리에 관련 엔터티로드

분류에서Dev

EF Core : 관련 일대 다 엔터티에서 여러 수준의 데이터를 쿼리하는 올바른 방법

분류에서Dev

EF : 관련 엔터티로드 지연 방식이 작동하지 않음

분류에서Dev

관련 데이터로 엔티티 프레임 워크 핵심 데이터를 시드하는 방법

분류에서Dev

Entity Framework 포함 된 관련 엔터티를 사용하여 엔터티를 json으로 직렬화

분류에서Dev

linq를 엔티티에 사용하여 관련 엔티티를 기반으로 레코드 가져 오기

분류에서Dev

Select () 메서드를 사용하여 데이터베이스에서 3 차 엔티티로드

분류에서Dev

, JPA 봄 부트를 이용하여 참조 엔티티 관련

분류에서Dev

EF Core-모든 자식 엔터티를로드하지 않음

분류에서Dev

Entity Framework를 사용하여 모든 관련 엔터티 반환

분류에서Dev

EF6에서 관련 엔터티로드

분류에서Dev

핵심 데이터 : 관련 엔티티의 속성을 기반으로 엔티티를 가져 오는 방법

분류에서Dev

Entity Framework를 사용하여 특정 엔터티에 대한 특정 관련 엔터티를 명시 적으로로드하는 방법은 무엇입니까?

분류에서Dev

Entity Framework가 관련 엔터티를 자동으로로드하는 이유

분류에서Dev

엔티티 프레임 워크를 사용하여 데이터베이스보기에서 관련 엔티티를로드하려면 어떻게해야합니까?

분류에서Dev

3 단계 관련 컬렉션을 포함하고 코드 우선 엔터티 프레임 워크를 사용하여 gridview에 표시

분류에서Dev

Lightswitch에서 외부 데이터 소스의 관련 엔터티를로드하는 방법 (Visual Studio 2013)

분류에서Dev

Doctrine2 엔티티 관리자가 관련 엔티티를 업데이트하지 않음

분류에서Dev

필수 관계가 Null 인 경우 EF Core가 엔터티를 삭제하는 이유는 무엇입니까?

분류에서Dev

EF Core에 이미 존재하는 자식 엔터티로 엔터티를 저장하는 방법은 무엇입니까?

분류에서Dev

관련 엔터티가없는 엔터티를 무시하는 관계를 통해 헤더 제목이있는 핵심 데이터 엔터티 목록 양식

분류에서Dev

둘 다 EF Core 3의 다른 단일 엔터티에 연결된 중첩 엔터티를 매핑하는 방법

Related 관련 기사

  1. 1

    관련 엔터티의 명시 적로드와 함께 'AsNoTracking'메서드를 사용하여 EF Core에 엔터티를로드하는 방법

  2. 2

    EF Core 3.1 : 즉시로드를 사용하여 관련 엔터티를로드 할 때 목록 탐색 속성을 초기화해야합니까?

  3. 3

    EF Core 3.1을 사용하여 관련 데이터로드

  4. 4

    EF Eager는 관련 엔터티에서 관련 엔터티를로드합니다.

  5. 5

    EF에서 관련 엔터티를 업데이트하는 방법 (코드 우선)

  6. 6

    Entity Framework 5-Include를 사용하여 관련 엔터티를로드하는 필터 적용

  7. 7

    Entity Framework 5-Include를 사용하여 관련 엔터티를로드하는 필터 적용

  8. 8

    EntityFramework를 사용하여 리포지토리에 관련 엔터티로드

  9. 9

    EF Core : 관련 일대 다 엔터티에서 여러 수준의 데이터를 쿼리하는 올바른 방법

  10. 10

    EF : 관련 엔터티로드 지연 방식이 작동하지 않음

  11. 11

    관련 데이터로 엔티티 프레임 워크 핵심 데이터를 시드하는 방법

  12. 12

    Entity Framework 포함 된 관련 엔터티를 사용하여 엔터티를 json으로 직렬화

  13. 13

    linq를 엔티티에 사용하여 관련 엔티티를 기반으로 레코드 가져 오기

  14. 14

    Select () 메서드를 사용하여 데이터베이스에서 3 차 엔티티로드

  15. 15

    , JPA 봄 부트를 이용하여 참조 엔티티 관련

  16. 16

    EF Core-모든 자식 엔터티를로드하지 않음

  17. 17

    Entity Framework를 사용하여 모든 관련 엔터티 반환

  18. 18

    EF6에서 관련 엔터티로드

  19. 19

    핵심 데이터 : 관련 엔티티의 속성을 기반으로 엔티티를 가져 오는 방법

  20. 20

    Entity Framework를 사용하여 특정 엔터티에 대한 특정 관련 엔터티를 명시 적으로로드하는 방법은 무엇입니까?

  21. 21

    Entity Framework가 관련 엔터티를 자동으로로드하는 이유

  22. 22

    엔티티 프레임 워크를 사용하여 데이터베이스보기에서 관련 엔티티를로드하려면 어떻게해야합니까?

  23. 23

    3 단계 관련 컬렉션을 포함하고 코드 우선 엔터티 프레임 워크를 사용하여 gridview에 표시

  24. 24

    Lightswitch에서 외부 데이터 소스의 관련 엔터티를로드하는 방법 (Visual Studio 2013)

  25. 25

    Doctrine2 엔티티 관리자가 관련 엔티티를 업데이트하지 않음

  26. 26

    필수 관계가 Null 인 경우 EF Core가 엔터티를 삭제하는 이유는 무엇입니까?

  27. 27

    EF Core에 이미 존재하는 자식 엔터티로 엔터티를 저장하는 방법은 무엇입니까?

  28. 28

    관련 엔터티가없는 엔터티를 무시하는 관계를 통해 헤더 제목이있는 핵심 데이터 엔터티 목록 양식

  29. 29

    둘 다 EF Core 3의 다른 단일 엔터티에 연결된 중첩 엔터티를 매핑하는 방법

뜨겁다태그

보관