我知道如何向SQL查询传递一个参数,但我想创建一个函数来传递多个参数,这些参数将具有不同的类型,我卡在这里了。
public List<T> RawSql<T>(string query, params object[] parameters)
{
var command = context.Database.GetDbConnection().CreateCommand();
command.CommandText = query;
command.CommandType = CommandType.Text;
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = "@bookId";
parameter.SqlDbType = SqlDbType.Int;
parameter.Value = parameters[0];
command.Parameters.Add(parameter);
var result = command.ExecuteReader())
return result;
}
用法:
var rows = helper.RawSql("myStoreProc @bookId", x=> new Book { Id = (bool)x[0] }, bookId);
但是我该如何更改RawSql函数以传递多个参数,例如这样:
var rows = helper.RawSql("myStoreProc @bookId, @authorName", x=> new Book { Id = (bool)x[0] }, bookId, authorName);
var data = connection.Query<Book>("myStoreProc", new { bookId, authorName }, commandType: CommandType.StoredProcedure).AsList();
- 这将做你所期望的一切,包括基于列名称的数据绑定Book
(经过优化等)(注意:对于所有通常情况都存在方法)。 - Marc Gravellcmd.Parameters.Add(string, dbtype).Value = data
。该集合创建参数,命名它,告诉它类型并在一行代码中设置值。如果这很关键,像Dapper
这样的ORM允许您使用最后面的语法。 - Ňɏssa Pøngjǣrdenlarp