如何在EF Core 3中的其他项目中输出SQLite数据库

问题描述 投票:0回答:1

我有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中继续生成* .db
dotnet ef database update --startup-project ../Sasw.SimpleBlog.Storage.SQLite.Migrator/ --project ./

我有一个包含2个项目的解决方案src | -ProjectA | -ProjectB ProjectA是一个针对netstandard2.1的类库,它包含DbContext(带有“ Data Source = blog.db”),实体,并且具有.. 。

sqlite .net-core entity-framework-core ef-migrations .net-core-3.1
1个回答
0
投票

我通过在连接字符串中指定完整路径来修复它。这是足够的,因为此路径应该可以在设置中配置。

public class DatabaseContext
    : DbContext
{
    public DbSet<Thing> Things{ get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        options.UseSqlite("Data Source=D:\\database.db");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.