为什么我不能执行 ToList()?
我建立了一个模型如下。 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 是“Transient.reference[POCOFirst.Quoter]”,但推荐是“Transient.reference[POCOFirst.Recycler]”
如果我删除 ToList()
,它就可以正常工作。但我需要一个列表作为方法的返回值。
为什么我不能执行 ToList()
?谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来您偶然发现了 EF 中的此错误。另一个对该错误的引用。
解决方法是删除
Include
方法。It looks like you have stumble upon this bug in EF. Another reference to the bug.
Workaround would be to remove the
Include
method.