sqlclient не может выполнить ничего, кроме операторов select

Учитывая, что запрос является допустимым оператором обновления, следующий код выполняется до завершения, без ошибок. Но никаких изменений в БД не происходит. Не получается молча.

            cmdSQL.CommandText = query;
            Con.Open();
            cmdSQL.Transaction = Con.BeginTransaction();
            cmdSQL.ExecuteNonQuery();    //returns 1 where expected
            cmdSQL.Transaction.Commit();
            Con.Close();

так и это:

            cmdSQL.CommandText = query;
            Con.Open();
            cmdSQL.Transaction = Con.BeginTransaction();

            SqlDataReader reader;
            reader = cmdSQL.ExecuteReader();

            int fields = reader.FieldCount;
            while (reader.Read())
            {
                for (int i = 0; i < fields; i++)
                    details.Add("" + reader[i]);
            }

            reader.Close();
            cmdSQL.Transaction.Commit();
            Con.Close();

Вот строка подключения:

Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\LocalDB.mdf;Integrated Security=True

Итак, вопрос: как мне заставить обновления работать?

PS: операторы select работают нормально.

ППС. База данных была создана через визуальную студию 2013... Это база данных на основе службы.

ПППС. Я тоже задавал этот вопрос... Я предполагаю, что у них есть похожие ответы. Та же проблема, другой подход: TableAdapter.Update возвращает 1, но без изменений в БД


person Sheena    schedule 25.06.2014    source источник
comment
Что вы имеете в виду под код срабатывает молча? Следили ли вы за кодом с помощью отладчика и видели ли код, выполненный без каких-либо сообщений об ошибках? Ни исключение, возбужденное и перехваченное попыткой/блоком?   -  person Steve    schedule 25.06.2014
comment
Как правило, вы должны проверить код возврата, чтобы увидеть, произошла ли ошибка. Например, вам может не хватать разрешения на обновление в SQL Server.   -  person JonnyBoats    schedule 25.06.2014
comment
@JonnyBoats - код возврата ExecuteNonQuery представляет собой количество обновленных строк (поэтому проверьте, если › 0), тогда как недостаточные разрешения приведут к возникновению исключения.   -  person Polyfun    schedule 25.06.2014
comment
Существуют ли какие-либо триггеры в базе данных, препятствующие обновлениям?   -  person Kevin Cook    schedule 25.06.2014
comment
@Steve: я имею в виду, что ошибок не было. Все исполнено. Данные в базе данных не менялись.   -  person Sheena    schedule 25.06.2014
comment
@ShellShock: я забыл упомянуть, я получаю 1, когда делаю обновление...   -  person Sheena    schedule 25.06.2014
comment
@KevinCook: Не то, чтобы я знал. Если только VisualStudio не сделала кое-что за моей спиной.   -  person Sheena    schedule 25.06.2014
comment
Возможный распространенный сценарий с этими симптомами — использование DataDirectory в строке подключения. Вы используете его?   -  person Steve    schedule 25.06.2014
comment
@ Стив: Да. Но использование статического каталога вместо каталога данных все равно делает это. Я отредактировал вопрос, включив в него строку подключения   -  person Sheena    schedule 25.06.2014
comment
@Steve: Причина, по которой я использую динамический каталог, заключается в том, что приложение должно быть развернуто с локальной базой данных.   -  person Sheena    schedule 25.06.2014
comment
Я могу указать вам на этот вопрос/ответ и позволить вам проверить, ваш ли это случай " title="почему не сохраняются изменения в базе данных"> stackoverflow.com/questions/17147249/   -  person Steve    schedule 25.06.2014
comment
@Steve: ты сотрясаешь мой мир!!! Если вы дадите ответ со ссылкой на свой другой ответ, я дам вам еще несколько баллов :)   -  person Sheena    schedule 25.06.2014
comment
@Sheena, если этот ответ является правильным решением для вашей проблемы, то правильный способ справиться с ситуацией closing as duplicate Конечно, если вместо этого это не ответ, дайте мне знать, и я могу отозвать заключительное голосование.   -  person Steve    schedule 25.06.2014