Как указать, чтобы использовать Convert.DBNull автоматически в качестве значения параметра sql, когда исходный параметр является нулевым в c #? - PullRequest
0 голосов
/ 21 января 2019

Мне нужно использовать Convert.DBNull для каждого значения NULL при добавлении параметров sqlCommands.Это утомительно, потому что у меня много команд sql.Поэтому было бы намного проще, если бы был какой-либо способ установки этого объекта (Convert.DBNull) в качестве параметра всякий раз, когда он получает нулевое значение в качестве параметра.

Пример: у меня есть такой код:

cmd.Parameters.AddWithValue("@MasterLastModifiedBy", Master.LastModifiedBy);

Поскольку переменные типа Master.LastModifiedBy иногда могут быть нулевыми, поэтому я должен переформатировать это в следующее:

cmd.Parameters.AddWithValue("@MasterLastModifiedBy", Master.LastModifiedBy?? Convert.DBNull);

Я не хочу делать это переформатирование во всех параметрах.Итак, что еще я могу сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 21 января 2019

Я бы предложил использовать какую-нибудь библиотеку ORM . Dapper или Entity Framework будет хорошим началом для начала.

Или вы можете написать свой собственный метод для добавления нулевой проверки к каждому параметру.

Наконец (особенно) подумав о дате последнего изменения, вы можете всегда установить ее, что, вероятно, упростит группу запросов

РЕДАКТИРОВАТЬ:

Ваш метод расширения может выглядетькак это:

public static class SqlExtensions // needs to be in a static class
{
    public static void AddWithValueAndNullCheck(this SqlParameterCollection collection, string parameterName, object value)
    {
        if (object == null)
        {
            collection.AddWithValue(parameterName, DBNull.Value);
        }
        else
        {
            collection.AddWithValue(parameterName, value);
        }
    }
}
...