2012-02-12 49 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方法。

相关问题