2017-03-01 5 views
0

コンソールプロジェクトでSQLiteデータベースファイルを管理するためにEFコアを使用しています。コンソールプロジェクトでEFコアデータベースのパスをプログラムで変更する

データベースを作成すると、ファイルはbinフォルダに作成されるため、基本的にはMyProjectName\bin\Debug\netcoreapp1.1\FooDatabase.sqliteとなります。

これを変更したいと思います。

Directory.SetCurrentDirectoryIHostingEnvironment.ContentRootPathを設定しようとしました。何も動作しません。

データベースを作成するディレクトリをプログラムで設定するにはどうすればよいですか。

答えて

1

Microsoft.Data.Sqlite 2.0(まだリリースされていません)、Directory.SetCurrentDirectory()はこのトリックを行います。

var builder = new SqliteConnectionStringBuilder(relativeConnectionString); 
bilder.DataSource = Path.Combine(dataDirectory, bilder.DataSource); 
var absoluteConnectionString = builder.ToString(); 

は、あなたが本当にをすることができます、内部の仕組みをいじるしたい場合は、私はそれをお勧めしません。それまで私はあなたの接続文字列に絶対パスを使用することをお勧め

// .NET Framework 
AppDomain.CurrentDomain.SetData("DataDirectory", myDataDirectory); 

// .NET Core 
Environment.SetEnvironmentVariable("ADONET_DATA_DIR", myDataDirectory); 
+0

もう1つのAppDomainとして.NETコアで動作しないと思います。しかし、最初はそうですが、ASP.NET DIコンテナでは動作しません。 2.0リリースが間もなく終了することを願っています。 – grokky

+0

@grokky .NET Coreで何をすべきではないかで私の答えを更新しました。 ;-) – bricelam

関連する問題