c# - 使用 ORM 仅检索一些列

标签 c# .net entity-framework

我正在使用 Entity Framework和带有 Database First 的 SQL Server 2008方法。

我的问题是:

我有一些包含很多列(~100)的表,当我尝试检索很多行时,它需要很长时间才能返回结果,即使有时我只需要使用 3 或 4 列从那个表。

我在 Stackoverflow 上花了半天时间试图找到解决这个问题的方法,我想出了两个解决方案:

  • 使用存储过程检索包含我想要的列的数据。
  • 编辑 .edmx (xml) 和 .cs 文件以删除我不会使用的列。

我的问题又是:

  • 如果我使用存储过程来检索包含我想要的列的数据, Entity Framework 会失去它的好处,我可以使用 ADO.NET 代替它并直接调用存储过程...

  • 我不能采用第二种解决方案,因为每次我在数据库中进行更改时,我都必须重新生成 .edmx 文件,并且我会丢失之前所做的更改:'(

有没有办法在 Entity Framework 中以某种方式做到这一点? 这可能吗 !

我知道还有其他 ORM,例如 NHibernateDapper ,但我不知道他们是否可以在不造成很多痛苦的情况下提供此功能。

最佳答案

您不必每次都返回每一列。您可以指定需要哪些列。

var query  = from t in db.Table
             select new { t.Column1, t.Column2, t.Column3 };

关于c# - 使用 ORM 仅检索一些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15297667/

相关文章:

c# - 使用 Selenium 和 React 等待渲染事件

c# - 删除datagridview标题中的排序箭头并将文本放在框的中央

.net - 在 UserNamePasswordValidator 中存储自定义信息

asp.net-mvc - IWindsorContainer 与 IUnityContainer 有什么区别?

c# - 如何使用 Entity Framework 和 Lambda 表达式编写下面的 mysql 查询?

c# - 将 ODATA $expand 查询选项与 WebAPI 和 ViewModel 结合使用

c# - 使用 boost 库在 C++ 中实现多线程的正确方法

c# - 有没有办法表示很长的数字?

c# - 当目标应用程序以管理员身份运行时,ShowWindow 功能不起作用

c# - Azure Functions Runtime v1 EventGrid 订阅创建失败