Как да форматирам низа за свързване на Db в моя файл app.config за приложение на Windows Forms?

Прерових интернет, за да се опитам да конфигурирам правилно низа за свързване на App.config за приложение на Windows Forms, без резултат.

Ето първия ми опит да свържа приложението си с базата данни:

private static string CONNECTION_STRING =
    @"Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\Visual Studio 2013\Projects\Test\Test\MyDatabase.mdf;Integrated Security=True;Connect Timeout=30";

Този низ за свързване работи чудесно при стартиране на програмата на моята локална машина, но не успя да се стартира на друга. Реших, че е заради абсолютния път, включен в низа за връзка. След като разгледах много теми относно файла App.config, добавих препратката System.Configuration и също така добавих следното към съответните им секции в кода Form1 и App.config:

В моя Form1.cs:

using System.Configuration;

private static string CONNECTION_STRING = ConfigurationManager.ConnectionStrings["TestConnectionString"].ConnectionString;

В моя файл App.config:

  <connectionStrings>
    <add name="TestConnectionString" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\MyDatabase.mdf" providerName="System.Data.SqlClient"/>
  </connectionStrings>

При опит за стартиране на програмата получавам следната грешка:

Неуспешен опит за прикачване на автоматично именувана база данни за файл D:\Visual Studio 2013\Projects\Test\Test\bin\Debug\MyDatabase.mdf. Съществува база данни със същото име или посоченият файл не може да бъде отворен или се намира в UNC дял.

Прочетох, че |DataDirectory| включен в connectionString е само за уеб приложения, но също така прочетох коментари от потребители, които са имали успех в своите Windows приложения, използвайки го точно както се опитах.

Какво ми липсва тук? Как да настроя моя connectionString в моя App.config файл, така че това приложение да има достъп до базата данни, независимо от коя машина стартирам изпълнимия файл?

Благодаря ви за всяка помощ!


person El Duderino    schedule 23.07.2014    source източник


Отговори (1)


Като цяло |DataDirectory| работи добре за WinForms приложения. Току-що го пробвах на моята локална машина и беше ОК.

Може би вашият mdf файл с база данни не е в главната папка? Създадох нова папка с име Data, преместих mdf файл там и успях да получа точно същото изключение като вашето.

Така че в моя случай промяната на параметъра connectionString на този реши проблема:

AttachDbFileName=|DataDirectory|\Data\Database1.mdf;
person Aleksandr Ivanov    schedule 23.07.2014
comment
Успях да получа |DataDirectory| да работи правилно в моето приложение. Имах базата данни в правилната папка, но все още не я бях добавил като източник на данни. Това поправи проблема, който имах с използването на |DataDirectory|. Благодаря ти за помощта! - person El Duderino; 29.07.2014