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