2009-09-11 11 views

Odpowiedz

71

|DataDirectory| jest łańcuchem zastępującym, dzięki czemu można oddzielnie skonfigurować lokalizację pliku bazy danych.

Więc zamiast:

SqlConnection c = new SqlConnection (
    @"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master"); 

wykonać następujące czynności:

// Set |DataDirectory| value 
AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB"); 

// SQL Connection String with |DataDirectory| substitution string 
SqlConnection c = new SqlConnection (
    @"Data Source=.\SQLDB; AttachDbFilename=|DataDirectory|\Database.mdf;Initial Catalog=Master"); 
+2

Oto niektóre dokumenty (wyszukiwanie DataDirectory): http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx – ironic

+2

i więcej: http://msdn.microsoft.com /en-us/library/cc716756.aspx – ironic

+0

to wydaje się działać również z sqlite: http://sqlite.phxsoftware.com/forums/t/1824.aspx – juFo

14

W MSDN forów społecznych this Odpowiedź można znaleźć

| DataDirectory | (zawarte w symbolach potoków) jest łańcuchem zastępującym, który wskazuje ścieżkę do bazy danych. Eliminuje to konieczność zakodowania pełnej ścieżki, która prowadzi do kilku problemów, ponieważ pełna ścieżka do bazy danych może być serializowana w różnych miejscach. DataDirectory ułatwia również współdzielenie projektu, a także wdrażanie aplikacji.

Na przykład, zamiast następujące parametry połączenia:

"Data Source= c:\program files\MyApp\Mydb.sdf" 

Korzystanie DataDirectory, można mieć następujący ciąg połączenia:

“Data Source = |DataDirectory|\Mydb.sdf” 

ustawić właściwość DataDirectory, zadzwoń do AppDomain. Metoda SetData. Jeśli nie ustawić właściwość DataDirectory, następujące zasady domyślne będą stosowane do uzyskania dostępu do folderu bazy danych:

  • W przypadku aplikacji, które są umieszczone w folderze na komputerze użytkownika, folder bazy danych korzysta z folderu aplikacji.
  • W przypadku aplikacji uruchamianych w ClickOnce folder bazy danych korzysta z określonego folderu danych, który został utworzony.
+0

Gdzie nazwałbyś AppDomain.SetData w projekcie MVC? – alex

8

Niepoprawni goście! The | DataDirectory | odnosi się do katalogu mssql \ data, w którym skonfigurowano twoją instancję.

Na przykład używam programu Visual Studio 2012 w trybie inconjunction z SQL Express. | DataDirectory | umieszcza wszystkie pliki MDF w folderze C: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA, w którym został zainstalowany mój sql express, a nie w folderze app_data rozwiązania.

Plik jest również nazwany MVCMovie.Models.MovieDBContext not Movies.mdf, jak określono w moim pliku web.config.

Myślę, że musi być skonfigurowany gdzieś w visual studio, aby został umieszczony odpowiednio pod app_data.

3

Może to być przydatne, jeśli korzystasz z pierwszych migracji kodu.

Przy VisualStudio 2013 (przynajmniej) podczas uruchamiania polecenia Update-Database katalog danych jest względny od "projektu startowego" aktualnie skonfigurowanego w visual studio.

Nawet jeśli uruchomisz bazę danych aktualizacji dla innego projektu (wybraną w konsoli menedżera pakietów), utworzysz swoją bazę danych w App_Data aktualnie wybranego projektu startowego.

Powiązane problemy