2014-12-11 5 views
0

데이터베이스 첫 번째 방법을 사용하여 asp.net mvc-4 웹 프로젝트에서 작업하고 있습니다. 이제 다음 컨텍스트 클래스가 있습니다 : -Dbcontext 안에서 DbSet에 대해 Var를 사용하면 IEnumerable 또는 IQueryable로 처리됩니다.

Public partial class IT360servicedeskEntities : DbContext 
    { 
     public IT360servicedeskEntities() 
      : base("name=IT360servicedeskEntities") 
     { 
     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      throw new UnintentionalCodeFirstException(); 
     } 

     public DbSet<TAccount> TAccounts { get; set; } 
     public DbSet<TAccountStatu> TAccountStatus { get; set; } 
     public DbSet<TContactInfo> TContactInfoes { get; set; } 
     public DbSet<TGroup> TGroups { get; set; } 
     public DbSet<TLogin> TLogins { get; set; } 
     public DbSet<TOrganization> TOrganizations { get; set 

; }

지금은 다음 쓴 내 모델 클래스 안에 가정 해 봅시다 : - var에 유형이 될 것입니다 무엇을

var test = context. TOrganizations; 
var2 = test.Where(a=>a.id == 100); 

그래서 내 질문을? IEnumerable 또는 IQueryable로 처리됩니다. 즉, 위의 코드를 사용하면 Where 절이 메모리 내부 또는 데이터베이스 내부에서 수행됩니다. 감사합니다.

답변

1

var t = test.Where(a=>a.id == 100)으로 전화하면 IQueryable<TOrganization>이 반환됩니다. 위의 경우 IQueryable의 확장 메서드 인 Where 메서드가 호출되면이 메서드는 Expression tree을 호출하지만 데이터베이스 내부에서 수행 할 이유는 없습니다. t을 foreach하거나 t.ToList()/t.ToArray()으로 전화하면 Expression tree를 방문하고 SQL 문자열을 만든 다음 데이터베이스에서 데이터를 가져옵니다.

+0

답장을 보내 주셔서 감사합니다. 그렇다면 dbset은 기본적으로 IQuerable입니다. –

+1

@ johnG 예,'DbSet '은'IQueryable '을 구현했습니다. –