我正在使用ObjectContext.ExecuteStoreQuery返回一个实体列表,大约30K。
我需要提高性能,所以我将“选择”我真正需要的4个属性,而不是总共20个属性。
我可以用这4个属性创建一个DTO,并将它传递给ObjectContext.ExecuteStoreQuery,但是我更喜欢使用DataReader,在30K上迭代,然后构建我的列表。
我尝试了这两种选择,这“似乎”他们采取了相同的时间(没有衡量)。我的问题是-does ObjectContext.ExecuteStoreQuery对结果集进行迭代,就像我手动处理DataReader一样?
我在MSDN中发现了这一点,但并没有真正回答我的问题。谢谢。
调用ExecuteStoreQuery方法等同于调用DbCommand类的ExecuteReader方法,只有ExecuteStoreQuery返回实体,ExecuteReader返回DbDataReader.
中的属性值。
发布于 2012-03-27 16:53:42
如果您的意思是,它是否在每次迭代中命中数据库,那么(通过文档)它将把整个结果集加载到实体中。但是,一旦加载,它将遍历内存中存储的数据。
https://stackoverflow.com/questions/9894029
复制相似问题