2015-06-12 4 views
0

У меня есть таблица с несколькими столбцами nvarchar (max), varchar (100) и столбцами типа бит. Я вставив значения к нему программно с помощью SQLCommand.ExecuteNonQuery().sql server сохраняет только нулевые значения для некоторых столбцов

Я обеспечивающий строковые значения всех NVARCHAR и VARCHAR столбцов и 0 или 1 в битовой колонке с использованием SQLParametr.AddWithValue("@parameterName", parameterValue)

Для некоторых столбцов это хранит правильные значения, но для некоторых только нулевые значения сохраняются даже после предоставления правильных значений параметров. Столбцы, в которых хранятся нулевые значения, имеют тип varchar (100) и бит.

В среде разработки все работает нормально, проблема возникает в среде тестирования.

The insert query looks like "INSERT INTO SOME_TABLE(Col1,Col2,Col3,Col4) VAlues(@param1, @param2, @param3, @param4)" 

Значения параметров правильные, даже в тестовой среде, проверены одинаково, распечатав значения в файле журнала.

Любое объяснение этого необычного поведения.

+0

Конкретный ответ нуждается в конкретной проблемы. Ответ на перенос будет состоять в том, что это должно работать, вы должны делать что-то неправильно. –

+0

попробуйте открыть профилировщик sql и посмотрите, что передается на сервер sql, проверьте значения, которые передаются. должно быть что-то не так со значениями. – Sushil

+0

Попробуйте вставить, используя значения напрямую, без использования .AddWithValue и посмотрите, как выглядит выражение SQL. – SteveFerg

ответ

0

@ Lasse V. Karlsen, вы были правы в пути (Ответ на вопрос о том, что это должно сработать). Оказывается, это глупая проблема.

Все запросы были написаны в отдельном файле класса, которые были указаны в проекте посредством добавления ссылки на проект (dll).

Недавно я внес некоторые изменения в файл класса (Queries) и повторно развернул. В среде Dev он работал нормально, но в тестовой среде решение все еще ссылается на старые dll, следовательно, старые запросы, в которых я не передавая любые значения, и столбцы разрешали null true, поэтому сохраняли нулевые значения.

Удаление старой DLL из GAC и установка новой длл исправили проблему

Смежные вопросы