像 DataAdapter 这样的 Dapper 命令

Mat*_*oso 1 c# stored-procedures sqldataadapter dapper

拜托,我可以将此方法转换为使用 Dapper 吗?

  • “BuscarUltimasLeituras”是一个程序
  • “@Last”是过程的参数(int)

public DataTable GetLeituras ( int ultimas )
    {
        DataTable listaLeiturasRomaneio = new DataTable();
        try
        {
            _sqlConnection.Open();

            _sqlCommand = new SqlCommand();
            _sqlCommand.Connection = _sqlConnection;
            _sqlCommand.CommandText = "BuscarUltimasLeituras";
            _sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;
            _sqlCommand.Parameters.Add("@Last", SqlDbType.Int).Value = ultimas;
            _sqlAdapter = new SqlDataAdapter(_sqlCommand);
            _sqlAdapter.Fill(listaLeiturasRomaneio);
        }
        catch ( SqlException )
        {
            listaLeiturasRomaneio = null;
        }
        finally
        {
            _sqlConnection.Close();
        }
        return listaLeiturasRomaneio;
    }
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 7

如果你仍然想要一个DataTable,你可以尝试:

var listaLeiturasRomaneio = new DataTable();
using (var reader = _sqlConnection.ExecuteReader(
    "BuscarUltimasLeituras", new { Last = ultimas },
    commandType: CommandType.StoredProcedure))
{
    listaLeiturasRomaneio.Load(reader);
}
Run Code Online (Sandbox Code Playgroud)

但是,更典型的用法是创建一个class以匹配您的数据,然后:

var listaLeiturasRomaneio = _sqlConnection.Query<YourType>(
    "BuscarUltimasLeituras", new { Last = ultimas },
    commandType: CommandType.StoredProcedure).AsList();
Run Code Online (Sandbox Code Playgroud)

请注意,dapper 也支持dynamic使用,但这通常用于临时使用:

var listaLeiturasRomaneio = _sqlConnection.Query(
    "BuscarUltimasLeituras", new { Last = ultimas },
    commandType: CommandType.StoredProcedure).AsList();
Run Code Online (Sandbox Code Playgroud)