数据访问层性能问题,在查询数据库的时候,直接返回DataTable好,还是返回SqlDataReader把数据存到List<T>中好些!别外,DataView的RowFilter,和 用Linq筛选List<T> 那个性能好些。请各位给些建议,或者讨论一下也好。谢谢!
解决方案 »
- c#WebBrowser的FileDownload事件为什么执行两次?
- 请问下面这段代码那里错了,求修改。感谢!
- C# 调用C++的dll 文件 返回的一个字符串问题
- 在线等!! 我在c#中引用了一个OCX控件,该控件的方法中 指针参数,我应改如何传递???
- 今日发现个怪问题..微软API的一个bug,各位帮忙解决
- 关于序列化和反序列化的问题:反序列化不了怎么回事啊?
- 求一个.net整站源码带编辑器源码的那种
- Datagrid中能不能在指定的单元格中响应回车事件?该如何写啊?
- 按扭控件颜色的修改?
- 关于tree view的难题!高手帮忙啊!
- windows消息
- 求教WM5.0,C#的socket连接问题。
DataTable,DataReader,List<T>都没有太大的性能问题唯一不同的是对象化填充和数据集填充,以及取完数据后,是否对象操作数据可以参考fortunbase中的ODRM
参考www.cnblogs.com/mail-ricklee
选择 SqlDataReader 还是 DataSet/DataTable,从根本上说是一个注重性能还是注重功能的问题。SqlDataReader 可提供最佳性能;DataSet 可提供额外的功能和灵活性。在下列情况下,请使用由 SqlDataAdapter 对象填充的 DataSet:
• 您需要不连续的内存驻留型数据缓存,以便可以将其传递给应用程序内的其他组件或层。
• 您需要数据在内存中的关系视图,以便进行 XML 或非 XML 操作。
• 您要处理从多个数据源(如多个数据库、表或文件)中检索到的数据。
• 您希望更新检索到的全部或部分行,并且使用 SqlDataAdapter 的批量更新功能。
• 您希望对其执行数据绑定的控件需要支持 IList 的数据源。 在下列情况下,请使用通过调用 SqlCommand 对象的 ExecuteReader 方法得到的 SqlDataReader:
• 您要处理大量的数据 — 多得难以在单个缓存中进行维护。
• 您希望减少应用程序的内存使用量。
• 您希望避免与 DataSet 相关联的对象创建开销。
• 您希望用对实现了 IEnumerable 的数据源提供支持的控件执行数据绑定。
• 您希望简化和优化数据访问。
• 您要读取的行包含二进制大对象 (BLOB) 列。您可以使用 SqlDataReader 在可管理的块区中将 BLOB 数据从数据库中提取出来,而不是一次将其全部提取出来。有关处理 BLOB 数据的详细信息,请参阅本文档中的处理 BLOB 一节。