代码之家  ›  专栏  ›  技术社区  ›  Daniel Pratt

通过LINQ to Entities查询预取继承实体的成员

  •  0
  • Daniel Pratt  · 技术社区  · 15 年前

    我想我能问这个问题的最简单的方法就是举个例子:假设我有一个实体框架模型,它有一个“order”实体,它有一个“orderlines”集合。“orderlines”集合表面上是orderline对象的集合,但我在这里使用继承,因此集合中对象的实际类型将是noteorderline、item orderline等。此外,item orderline实体具有关联的“item”实体。

    我要做的是基于“order”实体创建一个LINQ查询,预取“orderlines”集合,以及预取“item”实体(如果“orderline”实体实际上是“item orderline”类型)。有人知道吗?

    非常感谢。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Craig Stuntz    15 年前

    您可以通过投影来实现:

    var q = from o in Context.Orders
            select new
            {
                Customer = o.CustomerName,
                Lines = from l in o.Lines
                        let i = l as ItemOrderLine
                        select new
                        {
                           Quantity = l.Quantity,
                           Item = i.Item.Name,
                           ItemNo = (int?) i.Item.Number // Note below
                        }
             };
    

    i l 属于类型 NoteOrderLine . 自从 int 不能为空,必须将其强制转换为 int? 所以空的 设置时可以合并 ItemNo .

    您也可以对实体类型执行此操作,但这是不同的。因为你没有给出你想要写的代码的例子,我猜。