关于DataSet与Strongly typed DataSet几点思考(原创)
关于DataSet与Strongly typed DataSet几点思考
DataSet可以把看成一个数据库,也可以看成数据集。而Strongly typed DataSet从DataSet继承而来,并扩展了属性与方法。
很多人一直认为Strongly typed DataSet效率一定比DataSet高。哪也未必。
你可以填充一数据集,但是填充的时候不要超过100行,循环100或者1000次试试。就知道哪个效率更高。
哪为什么Strongly typed DataSet在填充方面效率没有比DataSet高呢。大家可以看看,Strongly typed DataSet不仅需要构造DataSet,而且还要构造,自动生成的许多代码。这是它还不够简洁,所以它在填充方面速度并不快。
因为我们在使用Strongly typed DataSet时,是使用的属性去访问,而在属性访问的时候,其本质是通过索引访问。(这个在博客园已经有人论证过了。)所以就有人一直认为强类型的DataSet比DataSet速度快。
Strongly typed DataSet的缺点已经说了。哪如何构造我们所需要的DataSet? ^-^
其实我们并不怕消耗内存,就怕消耗在内存的东西不再使用。其实可以创建一个对象池来管理所构造的Strongly typed DataSet,这样将它缓存。效率提高了2-10倍。
但是对于一个追求简洁的程序来说,虽然它已经是个非常不错的解决方案,但是我们还可以使用其它方案,提高代码的简洁。
相信Duwamish大家都看过,它使用的是DataSet,但是它并不是强类型化。但是执行效率仍然很高(因为我们的数据量不会太大)。如果大家对它的访问通过索引的,哪执行效率将会更高,这是我推荐的。因为是自定义的,所以足够灵活。而不会像Strongly typed DataSet哪样。不过你也可以将Strongly typed DataSet做成像Duwamish中的数据类。
如果从可维护性方面,哪Strongly typed DataSet可能会好些,但是如果代码写得好,也不见得使用类似Duwamish中的DataSet会差。而且我觉得可能还会更好些,只要大家对它进行扩展就行了。
基类DataSet这个没什么好说的,大家都用得比我还熟。^-^
OVER!
转载于:https://www.cnblogs.com/yi/archive/2006/06/16/427735.html
关于DataSet与Strongly typed DataSet几点思考(原创)相关推荐
- 认识并测量Typed DataSet
认识并测量Typed DataSet Truly 2005-08-05 下载本文的源码(C#) - 17k 下载本文的源码(VB) - 15k 简介 强类型DataSet 强类型DataSet是从Da ...
- dataset存入mysql_将dataset写入数据库
最近在将excel中的文件导入到数据库中,用程序进行编写,由于数据量较大所以速度很慢,后来采用了SqlBulkCopy类,解决了速度的问题,我就insert语句,sqldataadapter.upda ...
- e.target.dataset和e.currentTarget.dataset
作用: e.target.dataset与e.currentTarget.dataset的作用:获取标签中定义的值,定义方法 data-*=某个值 区别: e.target.dataset是指获取当前 ...
- Typed DataSet的批量操作优化
通过vs自动生成的强类型dataset代码,我截取看了一段自动生成的代码 //以下代码是我自定义了一段update 操作vs自动生成的 public virtual int ResetErrortim ...
- 机器学习的训练数据(Training Dataset)、测试数据(Testing Dataset)和验证数据(Validation Dataset)
三者的意义 - 训练数据:用来训练模型的数据 - 验证数据:用来检验模型准确率 - 测试数据:再一次确认验证数据集中的模型是好的模型. 一般步骤: 测试数据集和验证数据的数据一定不能用来训练,否则会出 ...
- 将批注用于类型化 DataSet (摘自MSDN)
批注使您能够在不修改基础架构的情况下修改类型化 DataSet 中元素的名称.如果修改基础架构中元素的名称,则会使类型化 DataSet 引用不存在于数据源中的对象,并且会丢失对存在于数据源中的对象的 ...
- [原创] 如何追踪每一笔记录的来龙去脉:一个完整的Audit Logging解决方案—Part I...
一.提出问题 在开发一个企业级 应用的时候,尤其在一个涉及到敏感数据的应用,比如财务系统.物流系统,我们往往有这样的需求:对于数据库中每一笔数据的添加.修改和删除,都需要有一个明确的日志,以便我们可以 ...
- 设计数据层组件并在层间传递数据
Angela Crocker.Andy Olsen 和 Edward Jezierski Microsoft Corporation 2002年8月 适用于: Microsoft® .NET ...
- MS-DOS信息英汉对照 计算机英语强化
词汇 释义 abort 中止 abstract class 抽象类 accelerator 快捷键 accelerator mapping 快捷键映射 accelerator table 快捷键对应表 ...
- .Net常用术语汇总
Source Translation abort 中止 abstract class 抽象类 accelerator 快捷键 accelerator mapping 快捷键映射 accelerator ...
最新文章
- 外部电源、锂电池供电自动切换并自动给电池充电的电路
- rust(28)-具名结构体
- c#通过HttpClient来调用Web Api接口
- cuDNN编写卷积实例
- LoaderManager使用具体解释(四)---实例:AppListLoader
- 计算机组成原理基本概念,《计算机组成原理》基本概念.doc
- Android反编译锁机文件
- Android集成百度语音识别
- 森林防火三维电子沙盘指挥系统
- 地图的电子围栏功能的技术选型
- Python可以做什么?
- git pull 是到工作区还是暂存区_我把git想简单了
- asp 设置table 间距_设置table表格
- JavaScript中如何用函数求任意两数之和?
- JSP内置对象使用大全
- C# WinForm开发框架
- matlab的数值微分,Matlab实现数值微分
- php查询信息 wordpress插件,请求PHP大神协助修改一个WordPress插件
- 个人常用linux命令归纳(5)
- 2015年CVTE校园招聘--Web后台服务开发工程师笔试题目及参考答案
热门文章
- 数据库新手常犯的5个错误
- 牛客网 暑期ACM多校训练营(第二场)D.money-贪心 or 动态规划
- 一道关于CSS选择器优先级的题
- [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal 由先序和中序遍历建立二叉树...
- Android中文URL乱码问题 解决
- poj 3714 Raid
- Hadoop只输出Key不输出Value的小技巧
- Expert C Programming学习笔记(1)
- Javascript经典窍门
- 【排序算法】希尔排序-常规排序