Я просматриваю код, и я не могу его прочитать. Я также пытался найти материал и примеры, но мне не удалось найти конкретную или какую-либо документацию, которая могла бы помочь мне понять проблему. Может ли кто-нибудь прочитать мне код и если есть какая-либо документация для его чтения.
Сначала мой вопрос заключается в том, почему нам нужно использовать DynamicParameter()
который является объектом Dapper. Я также не уверен, что означает =>
.
public void validRecord(string fileName, string rawContent, int userId)
{
Run(conn => conn.Execute("[dbo].[storedProc_GETDone]"
, new DynamicParameters
(new Dictionary<string, object>
{
{"fileName", fileName},
{"rowContent", rawContent},
{"userCreated", userId},
}), CommandType.StoredProcedure));
}
Run
не является частью dapper, но =>
в C # используется для создания лямбда-выражения , в этом случае я ожидаю, что это Action<DbConnection>
, т.е. я бы предположил, что ваш запуск выглядит примерно так:
Run(Action<DbConnection> action) {
using(var conn = CreateConnection()) {
conn.Open();
action(conn);
}
}
т.е. «Я собираюсь дать вам связь, что вы хотите с этим сделать?» - в этом случае вы выбираете Execute
хранимой процедуры.
Теперь стоит отметить, что в вашем примере нет пользы в использовании DynamicParameters
, так как информация хорошо известна - вы можете просто использовать:
Run(conn => conn.Execute("[dbo].[storedProc_GETDone]",
new { fileName, rawContent, userCreated = userId },
CommandType.StoredProcedure));
который будет работать так же хорошо. Поэтому в ответ на вопрос «зачем нам нужно использовать DynamicParameter
- вы этого не делаете , но в некоторых случаях вы можете - особенно если вы строите SQL на лету вручную, например:
if(name != null) {
sql.Append("and Name = @name ");
args.Add("name", name);
}