Entity framework 在EF Core 1.1和2.0中使用相同的EF数据库路径

Entity framework 在EF Core 1.1和2.0中使用相同的EF数据库路径,entity-framework,asp.net-core,entity-framework-core,asp.net-core-2.0,Entity Framework,Asp.net Core,Entity Framework Core,Asp.net Core 2.0,我的EF Core 1.1和ASP.NET Core 1.1应用程序正在MySolution/MyProject/bin/[Debug | Release]/netcoreapp1.1/MyDatabase.db(我认为这是默认设置)中查找其SQLite数据库。我的迁移在该路径中创建/迁移了数据库,一切正常 我正在尝试升级到netcoreapp2.0,但我的迁移仍然会写入该目录。但在运行时,应用程序在MySolution/MyProject/中查找数据库,而不是bin路径。因此,它当然失败了 如

我的EF Core 1.1和ASP.NET Core 1.1应用程序正在
MySolution/MyProject/bin/[Debug | Release]/netcoreapp1.1/MyDatabase.db
(我认为这是默认设置)中查找其SQLite数据库。我的迁移在该路径中创建/迁移了数据库,一切正常

我正在尝试升级到netcoreapp2.0,但我的迁移仍然会写入该目录。但在运行时,应用程序在
MySolution/MyProject/
中查找数据库,而不是bin路径。因此,它当然失败了


如何恢复以前的行为?

这是EF Core 2.0(问题)中的突破性变化。您应该将数据库文件移动到项目中,并指定复制到输出目录

可以这样做,这要感谢@bricelam提供的以下建议:

services.AddDbContext(
选项=>{
var builder=new-SqliteConnectionStringBuilder(_configuration.GetConnectionString(“DefaultConnection”);
builder.DataSource=Path.Combine(AppContext.BaseDirectory,builder.DataSource);
options.UseSqlite(builder.ToString());
},
ServiceLifetime.Scoped);

我在开发中对此进行了测试,但我不确定它是否可以在生产环境中使用,或者
AppContext.BaseDirectory
是否可以安全使用(而不是
IHostingEnvironment
或类似的东西)。

显示一些代码,它将helpful@tchelidze什么代码?我从未指定过任何地方的路径。因此,我希望升级到2,0时的行为与此相同,“MyDatabase.db”名称没有内置到
asp.net核心中,您可能已经在某个地方指定了它。@tchelidze是的,这是在
appsettings.json
中完成的,它具有
“ConnectionString”:{“DefaultConnection”:“Filename=MyDatabase.db”}
,虽然我也没有做任何改变:(谢谢Brice!你觉得我下面的解决方案怎么样?它对我很有用(尽管我还没有在生产中测试),但它是否有使您的推荐更好/更安全的漏洞?例如,使用
AppContext.BaseDirectory
是否安全,或者我应该使用
IHostingEnvironment
或类似的东西吗?仔细想想……应用程序正在应用程序目录(appsettings.json
文件的位置)中查找数据库.我的问题是db已经位于bin/output目录中,但应用程序没有在其中查看。。。
services.AddDbContext<MyDbContext>(
  options => {
    var builder = new SqliteConnectionStringBuilder(_configuration.GetConnectionString("DefaultConnection"));
    builder.DataSource = Path.Combine(AppContext.BaseDirectory, builder.DataSource);
    options.UseSqlite(builder.ToString());
  },
  ServiceLifetime.Scoped);