.NET Core 3.0:System.Data的变化

System.Data虽然不引人关注,但在.NET中,System.Data对于各种关系数据库的连接是非常重要的。System.Data也被称为ADO.NET,其前身是ActiveX Data Objects。System.Data提供了通过的框架,在她的基础上.NET数据驱动应用可以被构建。这个框架还提供了数据驱动程序应遵守的一些约定。

Connections,commands,data readers都是双继承。每个分别实现了来自于DbConnection, DbCommand,DbDataReader的基础功能。他们也实现了抽象接口IDbConnection, IDbCommand, 和IDbDataReader,这使得它们能够支持模拟场景和非传统数据源。在下文描述的基础类中都基于双继承方案。

虽然,connection strings一般被认为是字符串,但有些工具却认为它是继承自DbConnectionStringBuilder的对象。它能够处理数据库连接字符串的特定解析并帮助开发人员更好的理解特定数据库的可用设置。

在.NET中System.Data早于ORM框架出现,但是通过实现DbDataAdapter和DbCommandBuilder,它提供了生成sql的通用方法。它可以被直接使用,也能和普通数据集及类型化数据集组合使用。

如果你想找到一个抽象工厂模式的例子,你可以看下DbProviderFactory。它的自雷提供了connections, commands, command parameters, command builders, data adapters。其中包含了你需要的全部关于数据访问的需求,而不仅仅是数据库的逻辑。

接口的问题

在上文中已经提到,System.Data依赖于双继承。当我们想添加新的方法时,这将带来问题。例如,异步操作被加入到在.NET 4.5的DbCommand之中。但是却无法将他们添加到匹配的IDbCommand接口之中,因为这将是一个破坏性的改变。这意味着您不能同时使用异步操作和容易模拟的抽象接口。

微软本可以在.NET Core 1.0中重新设计抽象接口,以使得其能够与抽象类相匹配(Java通过JDBC的接口已经实现了)。然而,这却会使得.NET Framework共用源码变得困难。

如果默认接口方法能够出现在C#8.0中,在理论上,这一特征可以用来以向后兼容的方式调整接口。但是在.NET Framework中并不兼容,因为默认接口方法只是.NET Core的特征。它也不能使用较老的编译器和其他.NET语言。

DbDataReader.Get()中的字符串重载

我们对于System.Data在.NET Core 3.0之中的第一个特征是DbDataReader的Get()方法之中能够传递列名。长期以来,人们一直抱怨这个接口不能按名称引用列。这意味着你需要使用这个模式 。

1
reader.GetInt32(reader.GetOrdinal("columnName"))

一个明显的(对某些人来说,也是早就应该有的)简化方法是提供字符串重载。

1
reader.GetInt32("columnName")

这已经在Oracle's Connector/NET和MySqlConnector中实现。

处于性能考虑,该方法不会被标记为虚方法,从而允许JIT编译器轻松地内联它。也是由于上述原因,新的方法集不会添加到IDbDataReader中。

XmlDataDocument

如果你了解XmlDataDocument的历史,这似乎是一个奇怪的选择。在2010年发布的.NET 4.0之中,其已经被标记为过时的,并提出了XmlDataDocument在未来的版本中将会被删除的警告。现在使用它的原因是一些WinForms和WPF应用程序使用它,在bug报告中称,其在Apiport的各种类别中有1-7%的使用率。

DatasetExtensions

DataTableExtensions在.NET Core 3之中将不再支持。虽然它看起来只是有6个扩展方法的类,但是在不修改System.Data的情况下,我们无法构建AsDataView方法。原因相当的复杂,涉及内部方法、类型转发和.NET Standard带来的挑战。

原文地址:https://www.cnblogs.com/SuperChan/p/10286544.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯国赛 皮亚诺曲线距离

参考博客 题意: 题解: 这个很恶魔 本质好说就是找规律,但是贼难写。。 找了篇题解,做法就是大化小,将大阶化为成小阶,计算出离远点的距离。。。我感觉我是写不出来。。 挺秒的,要推公式估计要…

将 Visual Studio 的代码片段导出到 VS Code

导语和原文作者一样,水弟我现在也是使用 VS Code 和 Rider 作为主力开发工具,尤其是 VS Code 可以跨平台,又有丰富的插件支持和多种编程语言支持。当我从 VS 转移到以 VS Code 的开发过程中,遇到的最大问题就是代码提示的不完善&a…

如何基于 Kubernetes 构建完整的 DevOps 流水线

前言关于 DevOps 是一个很大的话题,它可能既涉及到公司的技术文化构建,也包括开发者技术能力的支持,这次技术干货分享主要是侧重于技术方面,就是如何用 Kubernetes 来服务好 DevOps 的流水线。本文从 4 个方面介绍:什么…

[SNOI2017]遗失的答案 (FWT)

description 小皮球在计算出答案之后,买了一堆皮肤,他心里很开心,但是一不小心,就忘记自己买了哪些皮肤了。 ||| 万幸的是,他还记得他把所有皮肤按照 1∼N 来编号,他买来的那些皮肤的编号(他至…

Abp中使用可视化的日志面板

如果你还不了解LogDashboard请看这里 使用logdashboard查看可视化日志。ABP的相关知识不做介绍如果有需要请阅读ABP官方文档ABP是Net下非常优秀的开发框架,在中国很多的项目都正在使用它。现在我们可以使用LogDashboard增强在使用ABP开发中的查看日志能力。下载ABP模板项目打开…

J - Just Multiplicative Inverse Gym - 102875J

J - Just Multiplicative Inverse Gym - 102875J 题目: 题解: 给定一个x,求出F(1,x)F(2,x)…F(x-1,x) 的和除以(x-1) F(x,p)题目已经给出 我们观察F()含义,再结合本题含义,本题并不是要求F(x,…

利用Topshelf把.NET Core Generic Host管理的应用程序部署为Windows服务

2019第一篇文章。此文源于前公司在迁移项目到.NET Core的过程中,希望使用Generic Host来管理定时任务程序时,没法部署到Windows服务的问题,而且官方也没给出解决方案,只能关注一下官方issue #809 等他们方解决了。官方文档只提供了…

开源项目商业模式分析(2) - 持续维护的重要性 - Selenium和WatiN

该系列第一篇发布后收到不少反馈,包括:第一篇里说的MonicaHQ不一定盈利没错,但是问题在于绝大多数开源项目商业数据并没有公开,从而无法判断其具体是否盈利。难得MonicaHQ是公开的,所以才用来做这系列文章的开篇。很多…

深入业务成为更好的软件架构师——信息化建设图鉴一二例

软件开发实际上跟英语比较类似,都是一项工具,服务于各行各业。从程序员的个人修养上来讲,一是要研习好软件开发这门技艺,二是要深入到所服务的行业。说到底,软件的终极目标是模拟业务,在此期间常常会有一个…

恭贺微软技术俱乐部苏州站正式成立

今天去苏州微软中国,参加了微软技术俱乐部苏州站的成立大会。大会的历程悉数经历,这会儿仍在为各位大佬、社区领袖的奉献精神所感动。在通过我们公司同事分享的链接报名时就了解到,大会上有苏震巍老师和蒋金楠老师的分享,便笃定了…

[HNOI2013]消毒 (匈牙利最大匹配)

Description 最近在生物实验室工作的小T遇到了大麻烦。 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a、b、c 均为正整数。为了实验的方便,它被划分为abc个单位立方体区域,每个单位立方体尺寸为111。用(i,…

.NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇

前言 最近一直在忙公司和私下的兼职,白天十个小时,晚上四个小时,感觉每天都是打了鸡血似的,精神满满的,连自己那已经学打酱油的娃都很少关心,也有很长一段时间没有更新博客了,特别抱歉&#…

[NOI2009] 变换序列 (匈牙利最大匹配)

description … solution 我竟然一眼题!! 变换后的TTT数组是[0,n)[0,n)[0,n)的排列,变换规则也有,距离DDD也知道 很明显可以求出iii的可能变换对象 这不就是个最大匹配?? 无解就是匹配数量达不到nnn罢了…

使用 WeihanLi.Npoi 操作 CSV

Intro最近发现 csv 文件在很多情况下都在使用,而且经过大致了解,csv 格式简单,相比 excel 文件要小很多,读取也很是方便,而且也很通用,微软的 ml.net 的示例项目 用来训练模型的数据也是使用的 csv 来保存的…

种类问题

几乎所有种类问题都可以转化成两种模型之一 1.直接维护ans数组 2.统计二维数点问题 前置知识 二维静态数点 以y为第一元素,x为第二元素,原点优先级大于查询点,对所有点(原点查询点),然后求 for(int i1;…

「LibreOJ Round #11」Misaka Network 与测试 (网络流跑二分图匹配)

description 研究者们想要测试 Misaka Network,于是他们把 Misaka Network 中的所有妹妹们召集到了一起。 现在妹妹们排成了 N行 M 列,有的位置没有人。现在研究者们给每一个个体的超能力进行了评定,一共有三个能力等级:Level 1 …

YbtOJ-相似子串【SA,RMQ,二分】

正题 题目大意 给出一个长度为nnn的字符串,两个串相似当且仅当可以通过每种字符置换使得它们相同。 qqq次询问这个字符串所有子串中和这个串中sl,rs_{l,r}sl,r​子串有多少个相似的。 1≤n≤105,1≤q≤51051\leq n\leq 10^5,1\leq q\leq 5\times 10^51≤n≤105,1≤…

程序员修仙之路--把用户访问记录优化到极致

点击上方蓝色字体,关注我们菜菜呀,前几天做的用户空间,用户反映有时候比较慢呀CEO,CTO,CFO于一身的CXO是吗?菜菜我把你拉进用户反馈群,你解决一下呀CEO,CTO,CFO于一身的CXO(完了,以后没清净时候…

[国家集训队]航班安排 (最大费用最大流)

description 神犇航空有K架飞机,为了简化问题,我们认为每架飞机都是相同的。神犇航空的世界中有N个机场,以0…N-1编号,其中0号为基地机场,每天0时刻起飞机才可以从该机场起飞,并不晚于T时刻回到该机场。一…

新数据革命:开源图形化数据引擎Hawk5发布

Hawk是一款开源图形化的爬虫和数据清洗工具,GitHub Star超过2k,前几代版本介绍如下:Hawk3: 终于等到你: 图形化开源爬虫Hawk 3发布!Hawk2: 120项优化: 超级爬虫Hawk 2.0重磅发布!Hawk1: 如何从互联网采集海量数据?租房…