C#数据库访问:用于获取数据的最佳方法

Doo*_*ght 2 c# database dll asp.net-mvc-3

我问的原因是,原来所有的参考和例子都指向方法2.

但是方法1似乎在如此少的代码中做得更多.当然是它

  1. 整洁,
  2. 更好
  3. 更易于阅读/遵循
  4. 并具有将DBNulls转换为null的功能.而不是自己做.
  5. 处理连接/数据读取器的打开和关闭.

我想不出方法2比使用方法1的任何原因.

(方法2很可能有使用条款,但由于这么多的代码,它被放置在一个单独的功能从别的wher调用,因此关闭它关闭,使数据inacccessable DataReader的.)

无论如何,我正在认真考虑回头并改变我的整个web服务以使用方法1,因为它似乎更好和可维护.任何人都可以建议吗?

方法1:

using (var db = Database.OpenConnectionString(Library.Properties.Settings.Default.dbConnString, "System.Data.SqlClient"))
        {
            Int32 AccNo = db.QuerySingle("SELECT AccNo FROM Tasks WHERE TaskID = " + TaskID);
        }
Run Code Online (Sandbox Code Playgroud)

方法2:

        sqlComm = new SqlCommand();
        sqlCon = new SqlConnection();
        sqlComm.Connection = sqlCon;

        sqlCon.ConnectionString = global::Library.Properties.Settings.Default.dbConnString;
        sqlComm.CommandText = "SELECT AccNo FROM Tasks WHERE TaskID = " + TaskID;
        sqlCon.Open();
        SqlDataReader data = sqlComm.ExecuteReader();
        while (data.Read())
        {
            Int32 AccNo = (Int32)data["AccNo"];
        }
        sqlCon.Close();
        sqlComm.Dispose();
        if (data != null)
           data.Close();
Run Code Online (Sandbox Code Playgroud)

Djo*_*ul6 9

尝试使用实体框架

using (var context = new YourDatabaseEntities())
{
    var elements = (from c in context.YourTable where c.TaskId == taskId select c);
}
Run Code Online (Sandbox Code Playgroud)