【问题标题】:SQLite and Entity Framework Core: why include doesn't work?SQLite 和 Entity Framework Core:为什么包含不起作用?
【发布时间】:2017-11-05 00:29:46
【问题描述】:

我使用 EntityFrameworkCore.SQLite v1.1.3,VS 2015,制作简单的 WPF 应用程序,.Net 4.6
PeopleOrders 表通过 OrdersToPeople 表关联为“多对多”我的数据库。我已经使用 SQLite 工具制作了 dbContext 类。
我使用此代码检查加载的数据:

var list = myDbContext.People
    .Include(t => t.OrdersToPeople);
foreach (var element in list)
{
    var c = element.OrdersToPeople.Count;
    //c is always 0. Why?
}

当我以相同的方式加载 OrdersToPeopleOrders 表时

var list = myDbContext.OrdersToPeople

var list = myDbContext.Orders

,我看到了数据。当我进行 SQL 查询时,它会返回正确的数据。

为什么Include 不加载OrdersToPeople

附: OrdersToPeople 字段为 virtual

public partial class People
{
    //...fields...
    public virtual ICollection<OrdersToPeople> OrdersToPeople { get; set; }
    public People()
    {
        OrdersToPeople = new HashSet<OrdersToPeople>();
    }
}
public partial class OrdersToPeople
{
    public long Id{ get; set; }
    public long PeopleId { get; set; }
    public long OrderId { get; set; }
    public virtual People People { get; set; }
    public virtual Orders Orders { get; set; }
}

【问题讨论】:

  • 请发布您提取数据的方法。
  • 没有足够的信息来查看您面临的问题。

标签: c# entity-framework sqlite include entity-framework-core


【解决方案1】:

我认为这种行为是意料之中的。您是否尝试在您的选择中调用 ToList?

看起来 EF 忽略了没有 ToList 的包含: Entity Framework Core ignoring .Include(..) without .ToList(..) indirectly

var list = myDbContext.People
    .Include(t => t.OrdersToPeople);
    .ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2016-08-04
    • 2019-03-12
    相关资源
    最近更新 更多