Доступ к БД при перемещении exe файла из рабочей папки в другую

Отвечено Доступ к БД при перемещении exe файла из рабочей папки в другую

  • 28 апреля 2012 г. 12:51
     
      С кодом
    Здравствуйте, есть прилодение - по нажатию на кнопку должен заполнится DataGrid.
     Если я переношу exe куда то в другой место, вне рабочей папки - генерится ошибка. 
     Не получается взять данные из БД. Для получения данных использую Entity FrameWork
     Строка подключения в *.config:

        <add name="EmployeeEntities" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\Employee.mdf;integrated security=True;connect timeout=30;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient"/>
     

    файл БД и exe находятся в одной папке

     В чём же проблема??

Все ответы

  • 28 апреля 2012 г. 12:58
    Модератор
     
     
    Конфигурационный файл тоже туда перенесите, туда же где и сам исполняемый файл, скорее всего проблема в этом.
  • 28 апреля 2012 г. 14:28
     
     
    К сожалению не помогает
  • 28 апреля 2012 г. 14:58
     
     Отвечено

    В строке подключения замените вот в этом месте: "attachdbfilename=|DataDirectory|\Employee.mdf" часть "|DataDirectory|" на полный путь к файлу: C:\MyDataFilder\

    Должно помочь.

    • Помечено в качестве ответа ansi_str 28 апреля 2012 г. 17:37
    •  
  • 28 апреля 2012 г. 15:04
     
     
    А есть такой способ, чтобы как то в самом .exe прописать - что если база лежит в папке рабочей(вместе с exe) то .exe корректно работает без ошибок, не зависимо  в какой папке расположены - C:\MyDir или D:\MyDir - но вместе. Так нельзя сделать - нудно всегда жёстко прописывать путь?


    То есть я взял из папки C:\MyDir скопировал файл exe и файл БД в  D:\MyDir, ничего не меняя и проект работает как ни в чём не бывало
    • Изменено ansi_str 28 апреля 2012 г. 15:06
    •  
  • 28 апреля 2012 г. 15:45
     
     
    Попробуйте оставить в ConnectionString только имя файла, вот так: attachdbfilename=Employee.mdf
    Да, файл конфигурации не забывайте копировать.
  • 2 мая 2012 г. 6:54
     
     

    ansi_str, вам помог совет Алексея, оставить имя файла без пути?

    Также вот здесь рассказывается как можно задать относительный путь не удаляя |DataDirectory|, а задавая ее значение на фактическое в коде - ADO.Net 2.0: Relative paths in ConnectionString [Sushil Chordia]


    Для связи [mail]