2016-07-18 7 views
0

다른 객체를 참조하는 자동 생성 클래스 (Orders 클래스)가 있습니다. 내가 달성하고자하는 것은 주문 번호와 해당 주문과 관련된 사용자를 사용하여 주문을받는 것입니다.엔티티 프레임 워크에서 특정 객체를로드하는 방법

그러나 개체를로드 할 때로드하는 데 2 ​​초가 걸립니다. 나는 객체를 보았고 EF는 모든 종속 객체 (언어, 국가, 고객 사용자) 중 목록을 채 웁니다.

주문 속성과 사용자 개체와 같은 특정 개체 만 가져 오는 방법은 무엇입니까? 나는 그 코드를 아래 코드를 사용하여 달성하려고했지만 모든 개체를로드하고 있습니다.

//Code for getting order id and user related to it 
    using (var _storeEntities = new StoreEntities()) 
    { 
    var test = _storeEntities.Orders.Where(r => r.Id.ToString() == orderId).Include(x => x.User).ToList(); 
    } 



// Parent entity 
    public partial class StoreEntities: DbContext 
    { 
    public virtual DbSet<Orders> Orders { get; set; } 
    } 

// Order object  
    public partial class Orders 
    { 
    public System.Guid Id { get; set; } 
    public bool IsActive { get; set; } 
    public System.DateTime OrderDate{ get; set; } 
    public Nullable<int> CustomerId { get; set; } 
    public string LanguageId { get; set; } 
    public Nullable<System.Guid> UserId { get; set; } 
    public string CountryId { get; set; } 

    public virtual Customer Customer{ get; set; } 
    public virtual User User{ get; set; } 
    public virtual Country Country { get; set; } 
    public virtual Language Language { get; set; } 
    } 

답변

2

당신은 당신 통화 중에 구성

public class YourContext : DbContext 
{ 
    public YourContext() 
    { 
     this.Configuration.LazyLoadingEnabled = false; 
    } 
} 

또는 게으른 로딩을 해제해야합니다 여기

using (var _storeEntities = new StoreEntities()) 
     { 
     _storeEntities .Configuration.LazyLoadingEnabled = false; 

     var test = _storeEntities.Orders.Where(r => r.Id.ToString() == orderId) 
             .Include(x => x.User).ToList(); 
     } 

입니다로드

https://msdn.microsoft.com/en-nz/data/jj574232.aspx

의 모든 유형에 대한 MSDN 문서
2

lazy loading :

_storeEntities.Configuration.LazyLoadingEnabled = false; 

생성자에서 또는 실행하려는 쿼리 전에. 또는 virtual 키워드 만 삭제하십시오.

_storeEntities.Configuration.ProxyCreationEnabled = false; 
:

은 또한 당신은 게으른 로딩에 사용되는 프록시 생성을 비활성화 할 수 있습니다

관련 문제