在使用Dapper语句之前声明动态结果

时间:2017-02-22 16:00:19

标签: c# dynamic dapper

我正在使用Dapper来调用存储过程。我想在using语句之外使用返回的记录,但我不知道如何声明变量returnedData,因为它是动态的并且取决于存储过程的结果。我只进行一次这样的调用,因此对我来说制作一个模型来表示存储过程返回的集合没有任何意义,因此我想使用它。

using (IDbConnection db = new SqlConnection(SqlDataAccess.LoadConnectionString("TestData")))
{
    var returnedData = db.Query<dynamic>("StoredProcedureName", 
                                new
                                {
                                    ClientId = myClientId,
                                    CompanyId = myCompanyId
                                }, 
                                commandType: CommandType.StoredProcedure).SingleOrDefault();
}

如何在returnedData语句之前声明变量using,以便编译器满意?

1 个答案:

答案 0 :(得分:1)

Query<T>返回IEnumerable<T>SingleOrDefault从中生成T,因此returnedData可以声明为dynamic

dynamic returnedData = null;
using (IDbConnection db = new SqlConnection(SqlDataAccess.LoadConnectionString("TestData")))
{
    returnedData = db.Query<dynamic>(
        "StoredProcedureName"
    ,   new {
            ClientId = myClientId
        ,   CompanyId = myCompanyId
        }
    ,   commandType: CommandType.StoredProcedure
    ).SingleOrDefault();
}
Console.WriteLine(
    "ClientId={0}, CompanyId={1}"
,   returnedData?.ClientId
,   returnedData?.CompanyId
);