2012-02-12 2 views
1

다음과 같이 모델을 작성합니다. Recycler와 Account 간의 관계는 1 : 1입니다.ToList()를 사용할 수없는 이유는 무엇입니까?

var query1 = context.Quoters 
    .OfType<Recycler>() 
    .Include(r => r.AccountRef) 
    .Where(r => r.QuoterId == 1) 
    .ToList(); 

var query2 = context.Set<Recycler>() 
    .Include(r => r.AccountRef) 
    .Where(r => r.QuoterId == 1) 
    .ToList(); 

예외 내가 ToList()을 제거하면 ResultType is “Transient.reference[POCOFirst.Quoter]”,but recommanded is “Transient.reference[POCOFirst.Recycler]”

, 그것은 잘 작동하는지 보여줍니다 : 나는 이러한 쿼리 중 하나를 수행 할 때

public class MyContext : DbContext 
{ 
    public DbSet<Quoter> Quoters { get; set; } 
    public DbSet<Account> Accounts { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Account>() 
      .HasRequired(a => a.RecyclerRef) 
      .WithRequiredDependent(r => r.AccountRef); 
    } 
} 

public class Quoter 
{ 
    public int QuoterId { get; set; } 
    public string Text { get; set; } 

} 

public class Recycler : Quoter 
{ 
    public string Description { get; set; } 
    public virtual Account AccountRef { get; set; } 
} 

public class Account 
{ 
    public int AccountId { get; set; } 
    public Recycler RecyclerRef { get; set; } 
} 

는, 나는 예외를 얻을. 그러나 메서드의 반환 값으로 목록이 필요합니다.

ToList()을 사용할 수없는 이유는 무엇입니까? 감사합니다

+0

'ToList()'를 놓치고 마우스를'var' 키워드 위에 올리면 툴팁이 그 타입을보고합니다. – ChrisF

+0

쿼리 유형이 IQueryable 임을 보여줍니다. – Abbey

답변

0

EF에서 this bug을 (를) 비틀 거린 것처럼 보입니다. the bug에 대한 또 다른 참조입니다.

해결 방법은 Include 메서드를 제거하는 것입니다.

관련 문제