【问题标题】:How to get entity while filtering out certain columns如何在过滤掉某些列时获取实体
【发布时间】:2011-06-21 07:37:21
【问题描述】:

我有一张包含巨大列的表格。如何在不填充映射到这些列的属性的情况下选择实体?

我有一个想法,但我不确定这是否是正确的方法:

ctx.Items.Where(....).Select(a=> new Item { ... bind only needed columns }).ToList()

这些实体会附加到 DataContext 吗?

【问题讨论】:

    标签: .net visual-studio-2008 entity-framework .net-3.5


    【解决方案1】:

    使用Item 以外的任何类型。例如,匿名类型或 DTO。然后您的查询将完全按照您的要求进行。

    【讨论】:

      【解决方案2】:

      我认为你走的是正确的道路。这是仅填充首选列/属性的实例化对象的方式。看看this post

      编辑:

      这来自 Julie Lerman,我相信这就是这个问题所问的:

      使用 LINQ 查询方法的投影 使用 LINQ 的基于方法的项目 查询语法,您将使用 Select 方法,然后识别 您想要在其参数中的属性。 基于方法的查询语法需要 创建匿名的语法 输入 lambda(参见示例 4-4)。

      示例 4-4。使用 LINQ 进行投影 基于方法的语法

      context.Contacts .Where(c => c.FirstName == "罗伯特") .Select(c => 新 {c.Title, c.LastName, c.名字})

      【讨论】:

      • 他的查询将在运行时失败。试试看。
      • 为什么克雷格失败了?什么是解决方案?如果德米特里读过这篇文章。
      • 它会失败,因为您不允许投影到实体类型上。就像我说的:试试看;错误信息很清楚。我已经在回答中给出了解决方案。
      猜你喜欢
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      • 2021-06-14
      • 2021-09-05
      • 2016-08-02
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多