我正在使用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
,以便编译器满意?
答案 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
);