在 ADO.NET 中使用或避免使用 CommandBuilder

Posted

技术标签:

【中文标题】在 ADO.NET 中使用或避免使用 CommandBuilder【英文标题】:Using or Avoiding CommandBuilder in ADO.NET 【发布时间】:2012-08-26 11:20:27 【问题描述】:

建议使用 CommandBuilder 还是应该为 SqlDataAdapter 手动创建 InsertCommand、DeleteCommand 和 UpdateCommand?

使用 CommandBuilder 的明显优势是更少的开发时间,缺点是更多的运行时间。除了这些因素之外,在使用/避免使用 CommandBuilder 时还有什么需要注意的吗?

【问题讨论】:

【参考方案1】:

使用 SqlCommandBuilderSqlDataAdapter 等原始 ADO.NET 通常涉及大量可以避免的样板代码。

如今,大多数现代业务线应用程序都使用某种形式的 ORM(对象关系映射器),它提供了一组很好的包装器,这些包装器在幕后使用了使用原始 ADO.NET 的最佳实践。

一些比较流行的 ORM 是:-

NHibernate 实体框架 Linq2Sql Dapper PetaPoco

使用 ORM 提供了许多有用的功能,例如简单性、灵活性、延迟加载、注入安全查询、POCO 支持等。

如果您仍然强烈希望通过 ORM 使用 ADO.NET,我建议您获取 Dapper 或 PetaPoco 的代码,并从您可能找到的一些最佳编码中取笑。

【讨论】:

以上是关于在 ADO.NET 中使用或避免使用 CommandBuilder的主要内容,如果未能解决你的问题,请参考以下文章

ADO.NET 学习

如何使用 ADO.NET 在 SQL CE 中设置 NOCOUNT ON?

ADO.NET 提供程序“Oracle.ManagedDataAccess.Client”未在计算机或应用程序配置文件中注册,或者无法加载

具有不变名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在机器或应用程序配置文件中注册

在 ASP.NET C# Web 应用程序中使用 ADO.NET 和 XML

无法使用 EF Core 或 LinqToDb EF Core Tools 或 ADO.NET 运行任何存储过程创建脚本