2017-03-01 19 views
0

我正在使用EF Core来管理控制台项目中的SQLite数据库文件。在控制台项目中以编程方式更改EF Core数据库的路径

当我创建一个数据库时,该文件创建在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

我想第二个不会在.NET Core中工作,因为没有更多的AppDomain。但首先会,但不会与ASP.NET DI容器一起使用。希望2.0版本即将下降。 – grokky

+0

@grokky我已经更新了我的答案,不应该在.NET Core上做什么。 ;-) – bricelam

相关问题