因此,起初,我将存储过程与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的存储过程,因此我不确定如何准确地做到这一点。我做了很多谷歌搜索,然后... ...>
您的代码不是存储过程。下面的代码只是示例:
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();
}
}
}