我有2个项目的解决方案
src
|-ProjectA
|-ProjectB
ProjectA是一个面向netstandard2.1的类库,它包含DbContext(带有"Data Source=blog.db"
),实体,并且它依赖于Microsoft.EntityFrameworkCore.Sqlite
ProjectB的目标是netcoreapp3.1,并依赖于Microsoft.EntityFrameworkCore.Design
。我只用它来管理迁移,因为迁移需要一个框架。
SQLite数据库不存在,所以我使用ProjectB中的dotnet工具创建了第一个迁移。>
dotnet ef migrations add InitialCreate --project ../ProjectA
并且它成功创建了带有初始文件夹的Migrations文件夹。
现在,我想更新数据库,以便实际创建SQLite * .db。如果我这样做:
dotnet ef database update --project ../ProjectA
*。db文件已创建,但在ProjectB中。我希望将文件输出到ProjectA中,但找不到方法。
文档似乎未提及任何内容,ef database update --help
均未提及>>
UPDATE 1
:我尝试从ProjectA创建和更新迁移,并指向可执行项目,如下所示:dotnet ef migrations add InitialCreate --startup-project ../ProjectB
并且它将在ProjectA中正确创建迁移。现在,我尝试应用它们来生成* .db,如下所示:
dotnet ef database update --startup-project ../ProjectB
并且它生成* .db文件...但是再次在ProjectB中!不在我想要的ProjectA中。
似乎
Microsoft.EntityFrameworkCore.Design
包在哪里,都将生成的数据库放在那里。
UPDATE 2
:在更新数据库以指向DbContext所在的位置时指定项目,也不起作用。它会在项目B中继续生成* .dbdotnet ef database update --startup-project ../Sasw.SimpleBlog.Storage.SQLite.Migrator/ --project ./
我有一个包含2个项目的解决方案src | -ProjectA | -ProjectB ProjectA是一个针对netstandard2.1的类库,它包含DbContext(带有“ Data Source = blog.db”),实体,并且具有.. 。
我通过在连接字符串中指定完整路径来修复它。这是足够的,因为此路径应该可以在设置中配置。
public class DatabaseContext
: DbContext
{
public DbSet<Thing> Things{ get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options.UseSqlite("Data Source=D:\\database.db");
}
}