我正在使用 Entity Framework和带有 Database First 的 SQL Server 2008方法。
我的问题是:
我有一些包含很多列(~100)的表,当我尝试检索很多行时,它需要很长时间才能返回结果,即使有时我只需要使用 3 或 4 列从那个表。
我在 Stackoverflow 上花了半天时间试图找到解决这个问题的方法,我想出了两个解决方案:
- 使用存储过程检索包含我想要的列的数据。
- 编辑 .edmx (xml) 和 .cs 文件以删除我不会使用的列。
我的问题又是:
如果我使用存储过程来检索包含我想要的列的数据, Entity Framework 会失去它的好处,我可以使用 ADO.NET 代替它并直接调用存储过程...
我不能采用第二种解决方案,因为每次我在数据库中进行更改时,我都必须重新生成 .edmx 文件,并且我会丢失之前所做的更改:'(
有没有办法在 Entity Framework 中以某种方式做到这一点? 这可能吗 !
我知道还有其他 ORM,例如 NHibernate或 Dapper ,但我不知道他们是否可以在不造成很多痛苦的情况下提供此功能。
最佳答案
您不必每次都返回每一列。您可以指定需要哪些列。
var query = from t in db.Table
select new { t.Column1, t.Column2, t.Column3 };
关于c# - 使用 ORM 仅检索一些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15297667/