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

성운

복잡한 관계 유형을 열심히로드하는 데 어려움이 있습니다. 내 엔티티를 고려하십시오.

public class User
{
    public string UserName { get; set; }
}

public class Ownership
{
    public User   Owner  { get; set; }
    public Device Device { get; set; }
}

public class Device
{
    public License License { get; set; }
}

모든 항목이 별도의 테이블에 있다고 가정합니다. 필수가 아닌 모든 규칙 코드를 생략했습니다. 필요할 때 더 게시 할 수 있습니다.

내 질문 :

var result = return context.Ownerships
              .Include(o => o.Device.License)
              .Where(o => o.Owner.UserName == userName)
              .Select(o => o.Device).ToList();

그러나 이로 인해 null모든 장치에 대한 가치있는 라이선스가 제공됩니다. 그러나 다음과 같이 라이선스를 정의하면 :

public class Device
{
    public virtual License License { get; set; }
}

그리고 다음과 같이 쿼리하십시오.

var result = return context.Ownerships
              .Where(o => o.Owner.UserName == userName)
              .Select(o => o.Device).ToList();

작동하지만 (라이센스는 null장치 용이 아님 ) 기본적으로 지연로드가 아닙니다. 엔티티는 나머지에 걸쳐 제공되므로 직렬화를 통해 필요하지 않은 라인을 통해 많은 데이터를 쿼리하는 각 장치에 대한 라이센스 정보를 얻습니다.

힌트가 있습니까?

해결책

var result = return context.Ownerships
    .Where(o => o.Owner.UserName == userName)
    .Select(o => o.Device)
        .Include(d => d.License)
        .ToList();
사랑하지 않음

당신이하고있는 일의 투영에 대한 작품 만 포함 시키십시오.

귀하의 경우에는 포함을 정의 Ownership하지만 포함이 정의 Device되지 않은 투영 을 정의하고 있습니다 (예 : 포함 .Include(o => o.Device.License)되지 않음).

이 작업을 수행 할 수 있습니다 (하지만 테스트하지는 않았습니다).

return context.Ownerships
          .Where(o => o.Owner.UserName == userName)
          .Select(o => o.Device)
          .Include(d=>d.License)
          .ToList();

쿼리하는 방식을 바꾸지 않으면 예를 들면 다음과 같습니다.

return context.Devices
          .Include(d => d.License)
          .Where(d => d.Ownerships.Any(o=>o.Owner.UserName == userName))
          .ToList();

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

EF6에서 관련 엔터티로드

분류에서Dev

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

분류에서Dev

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

분류에서Dev

WPF / MVVM / EF-엔터티의 관련 엔터티에 바인딩하는 방법은 무엇입니까?

분류에서Dev

EF의 내 엔터티는 관련이있는 다른 엔터티와 연결되지 않습니다.

분류에서Dev

EntityFramework에서 관련 엔터티별로 OrderBy하는 방법

분류에서Dev

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

분류에서Dev

Entity Framework는 nav 속성에 액세스하지 않을 때 관련 엔터티를 지연로드합니다.

분류에서Dev

Azure Cosmos DB는 쿼리 결과에 관련 엔터티를 추가합니다.

분류에서Dev

EF 6 저장 관련 엔터티 복합 키

분류에서Dev

NHibernate는 관련없는 엔티티에 합류했습니다.

분류에서Dev

관련 엔티티로드

분류에서Dev

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

분류에서Dev

일대 다 관계에 관련된 엔터티에서 SaveChanges를 호출하는 방법은 무엇입니까?

분류에서Dev

Entity Framework에서 여러 관련 엔터티로 필터링하는 방법

분류에서Dev

Hibernate는 SQL 서버 데이터베이스에 관련 엔티티를 저장하지 않습니다.

분류에서Dev

EF-관련 엔티티가로드되지 않음

분류에서Dev

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

분류에서Dev

EF 6 저장 관련 엔터티 비활성화 (가상)

분류에서Dev

관련 엔터티의 EF6 즉시로드 단일 속성

분류에서Dev

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

분류에서Dev

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

분류에서Dev

Nhibernate QueryOver JoinAlias 관련없는 엔티티

분류에서Dev

관련 엔터티에 액세스

분류에서Dev

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

분류에서Dev

EF에서 관련 개체를로드하는 방법?

분류에서Dev

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

분류에서Dev

Symfony2 ManyToMany 관계는 기존 관련 엔티티도 저장합니다.

분류에서Dev

다른 관련 엔티티가있는 엔티티의 API 엔드 포인트를 관리하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    EF6에서 관련 엔터티로드

  2. 2

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

  3. 3

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

  4. 4

    WPF / MVVM / EF-엔터티의 관련 엔터티에 바인딩하는 방법은 무엇입니까?

  5. 5

    EF의 내 엔터티는 관련이있는 다른 엔터티와 연결되지 않습니다.

  6. 6

    EntityFramework에서 관련 엔터티별로 OrderBy하는 방법

  7. 7

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

  8. 8

    Entity Framework는 nav 속성에 액세스하지 않을 때 관련 엔터티를 지연로드합니다.

  9. 9

    Azure Cosmos DB는 쿼리 결과에 관련 엔터티를 추가합니다.

  10. 10

    EF 6 저장 관련 엔터티 복합 키

  11. 11

    NHibernate는 관련없는 엔티티에 합류했습니다.

  12. 12

    관련 엔티티로드

  13. 13

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

  14. 14

    일대 다 관계에 관련된 엔터티에서 SaveChanges를 호출하는 방법은 무엇입니까?

  15. 15

    Entity Framework에서 여러 관련 엔터티로 필터링하는 방법

  16. 16

    Hibernate는 SQL 서버 데이터베이스에 관련 엔티티를 저장하지 않습니다.

  17. 17

    EF-관련 엔티티가로드되지 않음

  18. 18

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

  19. 19

    EF 6 저장 관련 엔터티 비활성화 (가상)

  20. 20

    관련 엔터티의 EF6 즉시로드 단일 속성

  21. 21

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

  22. 22

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

  23. 23

    Nhibernate QueryOver JoinAlias 관련없는 엔티티

  24. 24

    관련 엔터티에 액세스

  25. 25

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

  26. 26

    EF에서 관련 개체를로드하는 방법?

  27. 27

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

  28. 28

    Symfony2 ManyToMany 관계는 기존 관련 엔티티도 저장합니다.

  29. 29

    다른 관련 엔티티가있는 엔티티의 API 엔드 포인트를 관리하려면 어떻게해야합니까?

뜨겁다태그

보관