是否可以仅使用 SqlConnection SqlCommand 和 SqlDataReader 来执行数据访问层

Posted

技术标签:

【中文标题】是否可以仅使用 SqlConnection SqlCommand 和 SqlDataReader 来执行数据访问层【英文标题】:is it ok to do the Data Access Layer using only SqlConnection SqlCommand and SqlDataReader 【发布时间】:2011-01-15 06:05:37 【问题描述】:

我知道现在有很多现成的东西可供您使用,但如果您想完全控制数据库请求/查询并获得最佳性能,我认为这是要走的路。还有因为 ADO.NET 会自动为 SqlConnection 做连接池,你怎么看?

【问题讨论】:

【参考方案1】:

当然。如果您想要极致性能,那么您将无法获得比这更快的速度。我觉得还是可以的。

事实上,我现在正在做一个报告系统,它使用 SQL、DataReaders 和 SQLConnections,因为它运行 SQL。 OLAP 多维数据集并不是 OR 映射器的最佳候选者。

【讨论】:

【参考方案2】:

如果您确实需要完全控制生成的 SQL 查询并且正在寻找最佳性能,那么这就是您要走的路。但有时最好的性能是以可读性和可维护性较差的代码为代价的。如果是这种情况,您可能需要决定这个价格是否值得支付。

【讨论】:

【参考方案3】:

如果您需要最佳性能,那没关系。它为您提供更多控制和更好的性能。顺便说一下,这里有一篇关于在使用 ADO.NET 时应该考虑影响性能的事情的文章:How Data Access Code Affects Database Performance

【讨论】:

【参考方案4】:

我认为这很好。只有您可以确定任何给定项目的最佳工具集,并且只要您正确使用它们,遵循最佳实践,使用您认为最好的工具集。

就个人而言,我更喜欢使用您提到的工具,因为我喜欢更精细的控制。我只将拖放组件用于非常简单的任务,嘿,这些任务现在有了动态数据。

【讨论】:

【参考方案5】:

是的,你是对的,它具有最好的性能,但是你必须在做出决定之前考虑所有的点,有一些 ORM 工具可以控制你所有的数据访问层,而且它们的性能很好。

【讨论】:

【参考方案6】:

是的,我认为这完全没问题!我个人喜欢完全控制,准确定义数据库交互的方式,让您完全控制性能调整/优化。

只是想补充一点,当然 SqlDataAdapters 和 DataTables 也可能有它们的位置,尤其是在想要传递断开连接的数据时。

【讨论】:

【参考方案7】:

您可能还想查看企业库。它使用基本的 ADO.Net 对象,同时最大限度地减少在代码中进行这些调用所需的代码。

【讨论】:

以上是关于是否可以仅使用 SqlConnection SqlCommand 和 SqlDataReader 来执行数据访问层的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQLConnection 连接到 SQL CE 数据库

更新表 SQL 查询:SqlConnection

如何判断SqlConnection是否附加了SqlDataReader?

C# 如何确定SQL Server 中数据表是否存在

如何从 Sqlconnection 获取当前用户

默认网络数据包大小的差异:SqlConnection 与 SQL Server 默认值