C# 2 версии того же файла MDF

У меня есть файл MDF, который я использую в качестве БД и подключаясь к нему с помощью Linq-to-SQL.

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

<add name="TasteTeam.Properties.Settings.TasteDBConnectionString" connectionString="Data Source=(LocalDB)\v11.0; AttachDbFilename=|DataDirectory|\TasteDB.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />

Моя проблема заключается в том, что когда я запускаю программу и добавляю данные в таблицу, она добавляется в файл MDF, который находится в папке bin вместо основного файла MDF.

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

Что я могу сделать, чтобы и MDF, и MDF-файл tmp в корзине были одним и тем же файлом (я уже перепробовал все опции "copy to output directory", но ничего не помогло)

1 ответ

Решение

Весь подход AttachDbFileName= имеет недостатки - в лучшем случае! При запуске приложения в Visual Studio оно будет копироваться по всему .mdf файл (из вашего App_Data каталог в выходной каталог - обычно .\bin\debug - где работает ваше приложение) и, скорее всего, ваше INSERT работает просто отлично - но в итоге вы смотрите не тот файл.mdf!

Если вы хотите придерживаться этого подхода, попробуйте установить точку останова на myConnection.Close() позвоните - а затем осмотрите .mdf файл с SQL Server Mgmt Studio Express - я почти уверен, что ваши данные там.

На мой взгляд, реальным решением было бы

  1. установить SQL Server Express (и вы уже сделали это в любом случае)

  2. установить SQL Server Management Studio Express

  3. создайте свою базу данных в SSMS Express, дайте ей логическое имя (например, TasteDB)

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

    Data Source=.\\SQLEXPRESS;Database=TasteDB;Integrated Security=True
    

    а все остальное точно так же, как и раньше...

Также см. Отличный пост в блоге Аарона Бертранда. Плохие привычки: использовать AttachDbFileName для получения дополнительной информации.

Другие вопросы по тегам