EFCore DbConnection.CreateCommand параметры не передаются - PullRequest
0 голосов
/ 31 января 2020

Я использую EFCore в своем проекте и пытаюсь выполнить необработанный запрос SQL (потому что я нацеливаюсь на базу данных, которой не владею, и не хочу создавать массивную схему для него), передавая параметр. Вот что я делаю (хотя я изменил запрос для защиты):

            var customerId = "testname";
            using (var command = _dbContext.Database.GetDbConnection().CreateCommand())
            {
                command.CommandText = @"select * from customers where customerName = '@customerName'";
                var customerIdParam = new SqlParameter("@customerName", customerId);
                SqlParameter parameter = new SqlParameter();
                parameter.ParameterName = "@customerName";
                parameter.Value = customerId;
                parameter.DbType = System.Data.DbType.String;
                parameter.Direction = System.Data.ParameterDirection.Input;

                command.Parameters.Add(parameter);
                await _dbContext.Database.OpenConnectionAsync();
                using (var result = await command.ExecuteReaderAsync())
                {
                    return result;
                }
            }

Проблема в том, что, похоже, параметр не передается. Если я жестко задал значение для customerName который я отправляю, он отлично работает и возвращает строки, но если я передаю его как параметр, result не возвращает никаких строк

1 Ответ

1 голос
/ 31 января 2020

Параметр не должен быть заключен внутрь ', иначе он не определяется как параметр. Используйте это вместо:

command.CommandText = @"select * from customers where customerName = @customerName";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...