以编程方式更改控制台项目中EF Core数据库的路径

时间:2017-03-01 20:48:49

标签: c# entity-framework entity-framework-core

我在控制台项目中使用EF Core来管理SQLite数据库文件。

当我创建数据库时,文件是在bin文件夹中创建的,所以基本上是MyProjectName\bin\Debug\netcoreapp1.1\FooDatabase.sqlite

我想改变它。

我尝试设置Directory.SetCurrentDirectoryIHostingEnvironment.ContentRootPath。什么都行不通。

如何以编程方式设置应在其中创建数据库的目录?

1 个答案:

答案 0 :(得分: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);