【问题标题】:How to return multiple results from stored procedure using dapper如何使用 dapper 从存储过程返回多个结果
【发布时间】:2019-12-21 16:38:57
【问题描述】:

我有两个表属性和类型。两者我都需要使用 Dapper 中的存储过程同时返回。

【问题讨论】:

标签: asp.net-mvc sql-server-2012 dapper


【解决方案1】:

你执行QueryMultiple:

string sql = "Invoice_Select";

using (var connection = My.ConnectionFactory())
{
    connection.Open();

    using (var multi = connection.QueryMultiple(sql, new {InvoiceID = 1}, commandType: CommandType.StoredProcedure))
    {
        var invoice = multi.Read<Invoice>().First();
        var invoiceItems = multi.Read<InvoiceItem>().ToList();
    }
}

参考:

【讨论】:

  • 谢谢。如何将 QueryMultiple 设为通用
  • “我怎样才能使 QueryMultiple 成为通用的”,Hardik 是什么意思?
  • 就像我想在不同的地方使用 QueryMultiple。所以我不得不一次又一次地做上面的事情。所以我想要一个通用代码。例如:对于从存储过程返回数据,我有一个通用代码: public static IEnumerable ReturnList(string procedureName, DynamicParameters param = null) { using (SqlConnection sqlCon = new SqlConnection(connectionString)) { sqlCon.打开(); return sqlCon.Query(procedureName, param, commandType: CommandType.StoredProcedure); } }
  • 那么为什么在这种情况下您不简单地创建调用 QueryMultiple 的扩展方法“ReturnQueryMultiple”但您的设置已经预定义或您想要通用的东西?
【解决方案2】:

你可以这样做。

var results = conn.QueryMultiple(@"
    SELECT Id, FirstName, LastName FROM dbo.Users; 
    SELECT Id, CompanyName FROM dbo.Companies
");
var users = results.Read<User>();            
var companies = results.Read<Company>();

【讨论】:

    猜你喜欢
    • 2013-11-27
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2014-05-25
    • 2013-06-21
    相关资源
    最近更新 更多