【问题标题】:Lightweight ADO.NET Helper Class轻量级 ADO.NET 帮助程序类
【发布时间】:2011-04-16 10:28:00
【问题描述】:

谁能告诉我一个当前库,它提供了 ADO.NET 功能的基本包装?我正在寻找与旧 SqlHelper 类类似的东西,并且对使用数据访问应用程序块并不真正感兴趣(因为它对于我的简单需求来说有点矫枉过正)。现在每个人都在使用什么来直接使用 ADO.NET?

更新:

我应该注意到我已经在使用 ORM (Nhibernate);我刚刚遇到了需要原始 ADO.NET 调用的情况 - 因此无需建议使用 ORM 而不是使用 ADO.NET

【问题讨论】:

    标签: ado.net daab sqlhelper


    【解决方案1】:

    Dan,这是我几年来建立的一门课程。我广泛使用 ADO.NET。它支持 Fill、NonQuery、Scalar 等简单的东西,还支持获取模式、事务、批量插入等。

    DataAdapter(VisualStudio 2010 解决方案)

    如果您在使用它时需要更多帮助,请告诉我(注意:我删除了一些指向其他对象的链接以便为您发布此内容,所以如果它损坏了,请告诉我)。

    【讨论】:

    • 感谢分享...但即使这比我正在寻找的要重一些...而且它似乎包含许多“遗留”功能(例如使用数组列表),等
    • 是的,我在 GetReader 方法中看到了这一点。几个月前,我更新了 Fill、NonQuery 和 Scalar 方法以采用 params IDbParameter[] 参数而不是 ArrayList,但我没有更新所有内容。
    • @Dan,你认为是什么让它如此“沉重”?
    • 我的需求真的很简单;事实上,我开始认为我可以通过向 IDataReader 添加一些扩展方法来让我的生活更轻松。我总是犹豫是否要向我的代码库中添加其他地方没有的大量功能(例如,活跃的开源或商业包)。与您提供的内容完全不同 - 只是不是我正在寻找的内容。
    【解决方案2】:

    为此,我最终选择了Fluent Ado.net ;很棒的小库,用于执行不时弹出的简单的带外 ado.net 内容。

    【讨论】:

      【解决方案3】:

      我在这里编写了自己的小助手库(一个 .cs 文件): https://github.com/jhgbrt/yadal/blob/master/Net.Code.ADONet.SingleFile/Db.cs

      您可以在此处找到未加入的版本、测试和自述文件: https://github.com/jhgbrt/yadal

      【讨论】:

      • 感谢分享,这看起来很有趣。我在 repo 上没有看到许可证——你有吗?
      • 我刚刚添加了许可证文件,谢谢通知。
      【解决方案4】:

      希望对您有所帮助:

      public static class DbHelper {
      
              public static IDbCommand CreateCommand(this IDbConnection conn, string sql, params object[] args) {
                  if (!(conn is SqlConnection))
                      throw new NotSupportedException();
                  var command = (SqlCommand)conn.CreateCommand();
                  try { 
                      var paramterNames = new List<string>(args.Length);
                      for (int i = 0; i < args.Length; i++) {
                          string name = "@p" + i;
                          command.Parameters.AddWithValue(name, args[i]);
                          paramterNames.Add(name);
                      }
                      command.CommandText = string.Format(sql, paramterNames.ToArray());
                  }
                  catch (Exception) {
                      if (command != null)
                          command.Dispose();
                      throw;
                  }
                  return command;
              }
      }
      

      【讨论】:

        猜你喜欢
        • 2011-10-31
        • 1970-01-01
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 1970-01-01
        相关资源
        最近更新 更多