2014-05-18 2 views
-1
//Site entity 
public class Site 
{ 
    public long Id { get; set; } 
    public string Title { get; set; } 
    public virtual List<Language> Languages { get; set; } 
} 
//language entity 
public class Language 
{ 
    public long Id { get; set; } 
    public string Title { get; set; } 
    public string ShortName { get; set; } 
    public virtual List<Site> Sites { get; set; } 
} 
//my context with custom connection and transaction 
public class PortalBaseContext : DbContext 
{ 
    public PortalBaseContext(DbConnection conn) 
     : base(conn, false) 
    { 
     Database.UseTransaction((DbTransaction)PersistContext.Transaction); 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Site>().ToTable("TblSite"); 
     modelBuilder.Entity<Language>().ToTable("TblLanguage"); 
     modelBuilder.Entity<Site>(). 
            HasMany(c => c.Languages). 
            WithMany(p => p.Sites). 
            Map(
             m => 
             { 
              m.MapLeftKey("LanguageId"); 
              m.MapRightKey("SiteId"); 
              m.ToTable("TblSiteLanguage"); 
             }); 
    } 

    public DbSet<Site> TblSite { get; set; } 
    public DbSet<Language> TblLanguage { get; set; } 
} 


PortalBaseContext c = new PortalBaseContext(); 
//Part1 
DbSet<Site> query = c.Set<Site>(); 
query.Include("Languages"); 
lst = query.ToList(); 

//Part2 
//lst = c.TblSite.Include("Languages").ToList(); 

(부분적으로는 포함되지 않음)! 의견 part1과 part2 사용이 올바르게 작동하면 !!DbContext 집합 <> 포함하지 않음

요청 당 사용자 지정 연결 및 트랜잭션을 사용하고 각 클래스에 대해 하위 속성을로드하려고합니다.

(제 1 부 포함) 의견 part1과 part2 사용이 올바르게 작동하면 !!

요청 당 사용자 지정 연결 및 트랜잭션을 사용하고 각 클래스에 대해 하위 속성을로드하려고합니다.

+1

정확하게 당신이 "작동하지"무엇을 의미합니까? 특정 예외 또는 예기치 않은 동작이 있습니까? –

답변

1

Include은 비파괴적인 방법입니다. 각 항목에 구체화 될 때로드 된 지정된 관련 엔터티가있는 새 열거 형을 반환합니다. 원래 DBSet을 호출하면 어떤 방식 으로든 수정되지 않습니다.

Include이 반환 한 값에 ToList을 적용해야합니다. 이 변경이에

DbSet<Site> query = c.Set<Site>(); 
query.Include("Languages"); 
lst = query.ToList(); 

을 :

DbSet<Site> query = c.Set<Site>(); 
lst = query.Include("Languages").ToList(); 
관련 문제