Effective C# Item41 : DataSet优于自定义结构
大家认为DataSet不好的两个理由:1. 使用XML序列化机制的DataSet与非.NET代码之间的交互不是很好,使用DataSet的Web Services API很难与不支持.NET框架的系统交互;2. DataSet是一个非常通用的容器,程序员可能会牺牲某些.NET框架的类型安全而误用DataSet。
DataSet设计的初衷:为关系型数据库的一个离线缓存,它可以存储很多歌DataTable,每个DataTable中又存储于数据库相匹配的行与列,DataSet及其成员都支持数据绑定,另外,DataSet还支持各个DataTable间的关系以及给DataSet中的数据添加约束。
DataSet不是一个强类型容器,它是一个关于DataTable的字典集合,并且DataTable中的列也是一个字典结构,我们通常情况下,会使用以下的方式来访问DataSet中的数据。
int val = ( int )MyDataSet.Tables[ "table1" ].Rows[ 0 ][ "total" ];
通常,我们希望以下面这种语句来访问DataSet中的数据。
int val = MyDataSet.table1.Rows[ 0 ].total;
作者:李潘
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通