0

.NET 응용 프로그램에 대한 설치 프로그램 프로젝트를 만들었습니다. 설치 프로그램은 필요한 SQLite 파일을 특수 폴더 -> 사용자 응용 프로그램 데이터 로밍 폴더 (C : \ Users \ Xxxx \ AppData \ Roaming \ MyCompany)에 설치합니다.사용자 응용 프로그램 데이터 폴더에서 SQLite 데이터베이스를 읽는 Entity Framework

응용 프로그램은 Entity Framework를 사용하여 SQLite 파일에 액세스하고 개발하는 동안 로컬 컴퓨터 폴더에서 SQLite와 작동하도록 Entity Framework를 구성했습니다. Entity Framework에서 사용자의 응용 프로그램 데이터 폴더를 읽거나 쓰도록 구성하는 방법을 모르겠습니다.

답변

0

SQLite 파일에 대한 연결 문자열은 상대 경로를 허용하지 않습니다. 응용 프로그램을 배포 할 때 다음 두 가지 옵션이 있습니다.

1 ur app.config 관련 파일 -> connectionString 섹션에서 수동으로 url SQLite 데이터베이스 파일의 경로를 변경합니다. 내가 생각하기에 깨끗한 해결책이 아닙니다.

2- 응용 프로그램의 시작 또는 배포시 프로그래밍 방식으로 구성을 변경하십시오. 여기 예제 코드를 달성하는 방법 :

string _EntityContainerName = "";//Ur entity container name 
       Configuration _Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
       //DataSource 
       System.Data.SQLite.SQLiteConnectionStringBuilder _SqlBuilder = new System.Data.SQLite.SQLiteConnectionStringBuilder(); 
       _SqlBuilder.DataSource = @"C:\Users\Xxxx\AppData\Roaming\MyCompany\{UrSQLiteFileName}.s3db"; 
       string _ProviderString = _SqlBuilder.ToString(); 
       //ConnectionString 
       EntityConnectionStringBuilder _DataEntityBuilder = new EntityConnectionStringBuilder(); 
       _DataEntityBuilder.Provider = "System.Data.SQLite"; 
       _DataEntityBuilder.ProviderConnectionString = _ProviderString; 
       _DataEntityBuilder.Metadata = string.Format(@"res://*/{0}.csdl|res://*/{0}.ssdl|res://*/{0}.msl", _EntityContainerName); 
       string _DataConnectionString = _DataEntityBuilder.ToString(); 
       _Configuration.ConnectionStrings.ConnectionStrings[_EntityContainerName].ConnectionString = _DataConnectionString; 
       _Configuration.ConnectionStrings.ConnectionStrings[_EntityContainerName].ProviderName = "System.Data.EntityClient"; 
       _Configuration.Save(System.Configuration.ConfigurationSaveMode.Modified, true); 
       ConfigurationManager.RefreshSection("connectionStrings"); 

희망이 도움이 될 것입니다.

+0

도움 주셔서 감사합니다. 실제로 다른 질문에서 좋은 해결책을 찾았습니다. http://stackoverflow.com/questions/15037937/appdata-in-connection-string-is-not-solated-for-the- actual-folder 여기서 연결 문자열은 DataDirectory를 가리키며 응용 프로그램 시작시 설정됩니다. – Nuts

관련 문제