Могу ли я зафиксировать изменения в реальной базе данных при отладке C # в Visual Studio? - PullRequest
3 голосов
/ 13 января 2011

Я создаю приложение на C # с использованием Visual Studio, которое использует базу данных SQLExpress. Когда я нажимаю клавишу f5 для отладки приложения и внесения изменений в базу данных, я думаю, что происходит то, что в папке bin / debug есть копия базы данных, в которую вносятся изменения.

Однако, когда я прекращаю отладку, а затем нажимаю клавишу f5 в следующий раз, когда новая копия базы данных помещается в папку bin / debug, так что все изменения, сделанные в последний раз, пропали.

Мой вопрос:

Есть ли способ, при котором я могу отладить приложение, чтобы оно внесло изменения в фактическую базу данных, и эти изменения действительно будут сохранены, или это будет только изменение копии в папке bin / debug (если это на самом деле происходит)?

Я видел похожие вопросы, но не смог найти ответ, в котором говорилось бы, возможно ли сделать эти изменения постоянными в реальном файле .mdf.

Причина, по которой я спрашиваю, заключается в том, что при создании этого приложения я постоянно добавляю фрагменты и тестирую, чтобы убедиться, что все они работают вместе. Когда я добавляю тестовые данные, я использую фактические данные, которые я хотел бы сохранить в базе данных. Это помогло бы мне не вводить данные позже.

Заранее благодарим за любую помощь или информацию, которая может помочь мне лучше понять процесс.

Ответы [ 3 ]

11 голосов
/ 13 января 2011

Выберите базы данных в обозревателе решений и измените «Копировать в выходной каталог» на «Копировать, если новее».Позже, когда вы, наконец, получите финальную версию, скопируйте и вставьте базы данных из папки отладки в ваши исходные папки

2 голосов
/ 02 января 2014

Проблема с «Копировать, если новее» заключается в том, что при внесении изменений в любую часть структуры базы данных это изменение относится к версии в каталоге вашего проекта, а не к версии, на которой вы строите в каталоге отладки. .

Кроме того, при попытке запуска без отладки вы не используете копию, которую вы обрабатывали в папке отладки.

Обычно я использую Postgresql, но так как это новый компьютер, и я обнаружил, что MS делает эту версию Lite, решил попробовать. У меня есть много данных, которые являются историческими, которые я хочу получить в таблице, затем некоторые ручные манипуляции с небольшим количеством SQL. Затем я могу продолжить создание реальной функциональности базы данных.

Вы не можете просто скопировать измененную версию в каталог проекта, потому что есть файл журнала, и никто, кажется, не знает, что там, но Microsoft отчаянно нуждается в этом, чтобы каким-то образом соответствовать файлу вашей базы данных. (Полагаю, вы тоже это уже попробовали).

Я не хотел начинать с нуля каждый раз, когда запускал его, и, как и вы, я не нашел решений. Поэтому в отчаянном движении я скопировал версию в Debug в каталог tmp. Затем удалил версию в обозревателе решений проекта.

Затем я перетащил версию из tmp в обозреватель решений. (Все в нем структурно совпадает с оригиналом, за исключением того, что указано ниже)

Это сделало это, он воссоздал этот файл журнала. Теперь мои сеансы отладки начинаются с готовых загруженных данных.

Слова предупреждения. 1) Изменение структуры базы данных. В вашем обозревателе решений, файл Linq to SQL DBML, если вы изменили какую-то структурную часть базы данных в коде (где я обычно это делаю), щелкните правой кнопкой мыши файл DBML и перейдите в представление конструктора. Затем перетащите в дизайн любые новые таблицы или представления, которые вы добавили.

2) Поскольку необходимость удалять и перетаскивать базу данных кажется немного изворотливой, напишите себе функцию, которая работает в Form_Open в режиме отладки, которая копирует файл базы данных, например

\ MyDatabaseBackup \ myDatabase_date_time.mdb

Помните, что если вы в любой момент вернетесь к предыдущей версии, вам нужно переименовать ее в myDatabase.mdb

0 голосов
/ 13 января 2011

Скопируйте базу данных в какое-то правильное место и измените строку подключения в файле конфигурации, чтобы указать только на это, это только предложение, так как не знаете, какой тип приложения.это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...