2012-02-12 70 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(); 

異常顯示,ResultType is 「Transient.reference[POCOFirst.Quoter]」,but recommanded is 「Transient.reference[POCOFirst.Recycler]」

如果我刪除ToList(),效果很好。但是我需要一個列表作爲方法的返回值。

爲什麼我不能做ToList()?謝謝

+0

如果你錯過了'ToList()'並將鼠標懸停在'var'關鍵字上,那麼工具提示報告的類型是什麼? – ChrisF 2012-02-12 15:30:53

+0

它顯示查詢的類型是IQueryable 。 – Abbey 2012-02-12 15:44:54

回答

0

它看起來像你在EF遇到this bug。另請參閱the bug

解決方法是除去Include方法。

相關問題