2012-02-12 5 views
1

以下のようなモデルを構築します。 RecyclerとAccountの関係は1:1です。ToList()を実行できないのはなぜですか?

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; } 
} 

しかし、私はこれらのクエリのいずれかを実行したとき、私は例外を取得:

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]”

が、それがうまく機能することを示しているが。しかし、メソッドの戻り値としてリストが必要です。

なぜ私はToList()を実行できませんか?ありがとう

+0

'ToList()'を見逃し、 'var'キーワードの上にマウスを置くとツールチップがそのタイプをどのように報告しますか? – ChrisF

+0

これは、クエリのタイプがIQueryable であることを示しています。 – Abbey

答えて

0

あなたはEFのthis bugにつまずいているようです。 the bugの別の参照。

回避方法は、Includeメソッドを削除することです。

関連する問題