Program Tip

ADO.NET | DataDirectory |

programtip 2020. 12. 4. 20:21
반응형

ADO.NET | DataDirectory | 이 문서는 어디에 있습니까?


AppConfig에서는 사용할 수 |DataDirectory|있지만 문서를 찾을 수 없습니까?


|DataDirectory| 은 대체 문자열이므로 데이터베이스 파일의 위치를 ​​별도로 구성 할 수 있습니다.

그래서 대신 :

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

다음을 수행합니다.

// 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");

MSDN 소셜 포럼 에서이 답변을 찾을 수 있습니다.

| DataDirectory | (파이프 기호로 묶인)은 데이터베이스 경로를 나타내는 대체 문자열입니다. 데이터베이스에 대한 전체 경로가 다른 위치에서 직렬화 될 수 있으므로 여러 문제를 야기하는 전체 경로를 하드 코딩 할 필요가 없습니다. DataDirectory를 사용하면 프로젝트를 쉽게 공유하고 응용 프로그램을 배포 할 수도 있습니다.

예를 들어 다음 연결 문자열을 사용하는 대신 :

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

DataDirectory를 사용하면 다음과 같은 연결 문자열을 가질 수 있습니다.

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

DataDirectory 속성을 설정하려면 AppDomain.SetData 메서드를 호출합니다. DataDirectory 속성을 설정하지 않으면 다음 기본 규칙이 데이터베이스 폴더에 액세스하는 데 적용됩니다.

  • 사용자 컴퓨터의 폴더에있는 응용 프로그램의 경우 데이터베이스 폴더는 응용 프로그램 폴더를 사용합니다.
  • ClickOnce에서 실행되는 응용 프로그램의 경우 데이터베이스 폴더는 생성 된 특정 데이터 폴더를 사용합니다.

틀린 녀석들! | DataDirectory | 인스턴스가 구성된 mssql \ data 디렉터리를 나타냅니다.

예를 들어 SQL Express와 함께 Visual Studio 2012를 사용하고 있습니다. | DataDirectory | 모든 MDF 파일을 C : \ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA 아래에 배치합니다. 여기서 my sql express가 설치된 솔루션은 app_data 폴더가 아닙니다.

또한 파일 이름은 내 web.config에 지정된 Movies.mdf가 아닌 MVCMovie.Models.MovieDBContext입니다.

app_data 아래에 적절하게 배치하려면 Visual Studio의 어딘가에 구성해야한다고 생각합니다.


이를 구문 분석하고 필요한 경우 MDF를 만드는 SqlConnectionHelper라는 내부 클래스가 있습니다.

여기에 해당 클래스와 | DataDirectory |에 대해 찾을 수있는 유일한 MS 문서가 있습니다. 매크로 : http://msdn.microsoft.com/en-us/library/aa478948.aspx .


http://msdn.microsoft.com/en-us/library/aa478948.aspx

| DataDirectory | 연결 문자열의 일부는 MDF 파일이 App_Data 디렉터리에 있음을 지정합니다.


코드 우선 마이그레이션을 사용하는 경우 관련이있을 수 있습니다.

VisualStudio 2013 (적어도)에서 Update-Database 명령을 실행할 때 데이터 디렉터리는 Visual Studio에 현재 구성된 "시작 프로젝트"와 관련이 있습니다.

(패키지 관리자 콘솔에서 선택한대로) 다른 프로젝트에서 Update-Database를 실행하더라도 현재 선택한 시작 프로젝트의 App_Data에 데이터베이스가 생성됩니다.

참고 URL : https://stackoverflow.com/questions/1409358/ado-net-datadirectory-where-is-this-documented

반응형