Доступ к данным из Azure функции (. net core 3.1) в Azure SQL DB - PullRequest
0 голосов
/ 06 августа 2020

Что было бы более подходящим способом доступа к данным из функции Azure в Azure SQL DB. В моем случае это будет функция, запускаемая HTTP. Мне нужно проанализировать тело сообщения и вставить данные в таблицу БД. Я уже создал таблицу в базе данных.

Я извлек необходимые свойства из тела JSON и сформировал жестко запрограммированный оператор sql, например,

var text = "INSERT INTO dbo.customer VALUES ("
                + customerData.id
              + ", '" + customerData.prefix + "'"
              + ", '" + customerData.firstname + "'"
              + ", '" + customerData.lastname + "'"
    
                + ")";
    //I have tried using this method
            using (SqlConnection conn = new SqlConnection(str))
            {
                conn.Open();

                
                using (SqlCommand cmd = new SqlCommand(text, conn))
                {
                    // Execute the command and log the # rows affected.
                    var rows = await cmd.ExecuteNonQueryAsync();
                    log.LogInformation($"{rows} rows were updated");
                }
          }

Это работает для этой простой вставки, но мне кажется, что это не идеальное решение. Я не могу найти много примеров, где Azure функции используются для доступа к Azure SQL БД. Должен ли я использовать EF Core или текущий метод нужно изменить? Пожалуйста, предложите Спасибо

1 Ответ

0 голосов
/ 06 августа 2020

Вы можете использовать EF Core или улучшить свой код до другого уровня взаимодействия с SQL: Использование SqlCommand с ПАРАМЕТРАМИ для значений. => Без внедрения кода, все значения всех типов данных будут работать . С вашим фактическим кодом, вероятно, у вас будут проблемы с некоторыми данными ... например, ' внутри строки;)

см. Документы MS: SqlCommand.Parameters

Dapper, предложенный Teja, - это еще один хороший и простой способ взаимодействия с базами данных, IMHO - средний путь от EF и чистых SQL команд (с нашими без параметров), но я не уверен, что это работает дюйм. Net Core (от 2.x до 3.1)

Примечание: я использую мой класс для взаимодействия с SQL, Azure или нет, и на конце трубки , все используют SqlCommand с параметрами ... также EF и, я полагаю, Dapper ... это единственный способ, без написания нового SqlClient;)

...