关于强类型DataSet的一些小建议
来源:互联网 发布:python 改变图片颜色 编辑:程序博客网 时间:2024/05/01 13:38
强类型的DataSet可以帮助我们快速的建立数据访问层,它的简易性使得我们可以在小的项目中广泛的使用它。但是它也有一些小的缺陷,这里和大家共同讨论下它到底有哪些缺陷,以及我们怎么去避免这些问题。
1) 在一个query中,它只支持对本表的操作,不支持对多表的操作。在这种情况下,我们可以自己写一个stored procedure,然后新建一个TableAdapter,这样它便会帮我们生成一个新的逻辑实体表,表内存储的是stored procedure中返回的列。
2) 数据库端的任何改动都不会自动update到强类型的DataSet. 这个功能可能会在以后的版本中得到解决,在ORCAS中,强类型DataSet和LINQ仍然都没有实现自动更新schema的功能。既然它不能自动更新schema,我们只能手动删除这个表然后重新添加这个表(手动改字段的属性也可以,但是容易造成错误)。这样的话所有写的query都将会丢失。为了避免这样的情况,我们可以将所有的query写成存储过程,这样即使在表删除的情况下,我们仍然可以轻松再添加一遍。
3) 强类型的DataSet在获取存储过程的返回值(e.g. return 1)方面有点问题。我们不能方便的像函数一样得到 int returnValue = (int) da.CallSP(); 为了得到它的返回值,我们需要实现一个生成的TableAdapter的partial类,然后加上这个自定义的方法:这个commandIndex的值就是你的方法所在的index,如下示例中index是1(index是从0开始算起):
现在我们便可通过如下代码来得到返回值:当然,在ORCAS中,我们也有更好的选择,那就是用LINQ-SQL。它是.NET的一个ORM工具,它可以通过LINQ query自动为你生成SQL脚本,让你更加快速的建立数据访问层,所支持的功能更加的强大。不过在.NET Framework 3.5 SP1中,它将被LINQ-Entity所替代。
1) 在一个query中,它只支持对本表的操作,不支持对多表的操作。在这种情况下,我们可以自己写一个stored procedure,然后新建一个TableAdapter,这样它便会帮我们生成一个新的逻辑实体表,表内存储的是stored procedure中返回的列。
2) 数据库端的任何改动都不会自动update到强类型的DataSet. 这个功能可能会在以后的版本中得到解决,在ORCAS中,强类型DataSet和LINQ仍然都没有实现自动更新schema的功能。既然它不能自动更新schema,我们只能手动删除这个表然后重新添加这个表(手动改字段的属性也可以,但是容易造成错误)。这样的话所有写的query都将会丢失。为了避免这样的情况,我们可以将所有的query写成存储过程,这样即使在表删除的情况下,我们仍然可以轻松再添加一遍。
3) 强类型的DataSet在获取存储过程的返回值(e.g. return 1)方面有点问题。我们不能方便的像函数一样得到 int returnValue = (int) da.CallSP(); 为了得到它的返回值,我们需要实现一个生成的TableAdapter的partial类,然后加上这个自定义的方法:这个commandIndex的值就是你的方法所在的index,如下示例中index是1(index是从0开始算起):
现在我们便可通过如下代码来得到返回值:当然,在ORCAS中,我们也有更好的选择,那就是用LINQ-SQL。它是.NET的一个ORM工具,它可以通过LINQ query自动为你生成SQL脚本,让你更加快速的建立数据访问层,所支持的功能更加的强大。不过在.NET Framework 3.5 SP1中,它将被LINQ-Entity所替代。
- 关于强类型DataSet的一些小建议
- 强类型的DataSet
- 强类型的DataSet
- DataSet强类型的问题
- 强类型DataSet的基本知识
- 强类型DataSet的基本知识
- 强类型DataSet的使用
- 关于博客建设的一些小建议
- Vs2005 强类型DataSet的应用
- 使用强类型DataSet的好处
- 重置强类型DataSet的数据库连接字符串
- 强类型DataSet 数据集的应用
- 关于DataSet取值的一些小问题..
- 强类型DataSet教程
- 强类型DataSet测试
- 强类型DataSet
- C# 强类型DataSet
- 关于主动生成的强类型DataSet 的Adapter的Update无效问题
- C#实现图片打印
- x264编解码器 - Intel IPP
- Android Activity的四种LaunchMode!!!
- sql server
- 动态添加diV,实现了拖拽功能
- 关于强类型DataSet的一些小建议
- VS中利用OLED读写ACCESS数据库,无法保存的问题
- 终于知道
- 如何把SegmentedControl加到Navigation中间
- 从头到尾彻底解析Hash 表算法
- ultraedit正则表达式
- 【Qt开发】Qt 捕捉窗口关闭事件与信号的捕捉
- 计算机信息系统安全保护等级划分准则
- 使用 ctrl+shift+f 键整理代码的配置