如何将具有键值对的对象列表发送到存储过程中?

问题描述 投票:0回答:1

因此,起初,我将存储过程与Dapper结合使用。我仍然不是最擅长使用SQL的存储过程,因此我不确定如何准确地做到这一点。我做了很多的谷歌搜索,我只能找到关于如何传递值集合的示例,但没有关于带有键值对的对象集合的示例。 (使用一组值时,我已经或多或少地知道要使用WHERE DBField IN inputList。)>

我要传递的对象列表中充满了此类:

public class InputClass
{
      public string ClassFieldOne {get;set;}
      public string ClassFieldTwo {get;set;}
}

这是Dapper的存储过程:

public async Task<IEnumerable<OutputClass>> LoadStuffFromMSSQL(IEnumerable<InputClass> inputList)
{
        var paramz = new
        {
            InputList = inputList
        };

        var sql = $@"
            SELECT 
                ONE.Field
                ONE.Field1
                TWO.Field2
            FROM 
                dbo.FIRST ONE
            JOIN 
                dbo.SECOND TWO ON ONE.Field3 = TWO.Field3
                               AND ONE.Field4 = TWO.Field4
                               AND ONE.Field5 = TWO.Field5
            WHERE 
                ????";

        using (var conn = new SqlConnection(configuration.ConnectionString))
        {
            return await conn.QueryAsync<OutputClass>(sql, paramz);
        }
}

我认为我需要使用某种子查询,但是我似乎找不到任何可以直接指定它的东西。有人可以指出一些文档吗?

因此,起初,我将存储过程与Dapper结合使用。我仍然不是最擅长使用SQL的存储过程,因此我不确定如何准确地做到这一点。我做了很多谷歌搜索,然后... ...>

c# sql dapper
1个回答
0
投票

您的代码不是存储过程。下面的代码只是示例:

private void Sample_Add_Sp() 
  {
  using (SqlConnection con = new SqlConnection(configuration.ConnectionString)) 
    {
    using (SqlCommand cmd = new SqlCommand("sp_Add_contact", con)) {
      cmd.CommandType = CommandType.StoredProcedure;

      cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;
      cmd.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text;

      con.Open();
      cmd.ExecuteNonQuery();
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.