コンソールプロジェクトでEFコアデータベースのパスをプログラムで変更する

c# entity-framework entity-framework-core

質問

私はコンソールプロジェクトでSQLiteデータベースファイルを管理するためにEF Coreを使用しています。

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

私はこれを変更したい。

私はDirectory.SetCurrentDirectoryIHostingEnvironment.ContentRootPath設定しようとしIHostingEnvironment.ContentRootPath 。何も動作しません。

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

受け入れられた回答

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


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ