为什么我不能做ToList()?

时间:2012-02-12 15:24:14

标签: entity-framework linq-to-entities code-first

我建立了如下模型。 Recycler和Account之间的关系是1:1。

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()?感谢

1 个答案:

答案 0 :(得分:0)

看起来你在EF this bug偶然发现了。对the bug的另一个提及。

解决方法是删除Include方法。