繁体   English   中英

实体框架3-链式导航属性中的过滤器元素

[英]Entity Framework 3 - Filter Elements in Chained Navigational Properties

我试图限制在一系列导航链中选择的元素。 大致顺序如下:订单->偏好-> PreferenceCard->商品-> OrderItem

笔记:

  • 订单可以有多个首选项。
  • 首选项具有1张首选项卡。
  • 优惠卡由物品组成。
  • OrderItem包含有关特定于订单的商品的详细信息。

如何将OrderItems的选择限制为仅链接到我的订单? 我的Include("Preference.PreferenceCard.Item.OrderItem")只会获取所有OrderItem,即使它们与Order不对应。

我已经尝试过Where()子句,但是它似乎没有做任何事情:

.Where(
    o => o.Preference.Any(
        p => p.PreferenceCard.Items.Any(
            item => item.OrderItem.Any(
                orderItem => orderItem.OrderId == o.OrderId))))

我该如何正确地过滤甚至通过导航属性链接的OrderId的OrderItem?

我相信与这些类型的问题混淆的主要根源是,了解到EntityFramework中的Entity与普通类不同。 如果您不想操纵数据结构或其导航属性(添加,修改,删除),并且只想拥有数据的自定义视图,则应该返回匿名类型或POCO(普通的旧CLR对象) )。 您可以声明自己的类并相应地分配属性。

public class OrderView
{
  public int Id { get; set; }
  public IEnumerable<OrderItem> OrderItems { get; set; }
  ...
}

var query = from o in context.Orders
            select new OrderView
            {
              Id = o.Id,
              OrderItems = //custom filtering
              ...
             };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM