繁体   English   中英

使用 Entity Framework Core 和 .NET 6 更新 SQLite 数据库以反映对模型的更改

[英]Updating a SQLite Database to reflect a change to the model with Entity Framework Core and .NET 6

我创建了一个如下所示的 dbcontext:

public class DatabaseContext : DbContext
{
    public DbSet<Author> Authors { get; set; }
    public DbSet<Book> Books { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite(@"Data Source=E:\Portfolio\FullStack\HomeLibraryManager\Database\Library.db;");
    }
}

我像这样初始化它:

using (var context = new DatabaseContext())
{
    context.Database.EnsureCreated();
    var books = context.Books.ToList();
}

我想在我的Book类中添加一个变量,但是如何让数据库表将该新变量添加为列。

我曾希望EnsureCreated()可以确保在需要时更新表列,但似乎没有。

任何帮助都会很棒,

谢谢

编辑解决方案:我使用了 context.Database.Migrate(); 而不是 EnsureCreated 并运行 dotnet-ef 迁移首先添加 [MigrationNameHere]

在包管理器控制台中运行 Add-Migration AddUrl 命令。 Add-Migration 命令检查自上次迁移以来的更改,并使用找到的任何更改构建新迁移。 我们可以给迁移一个名字; 在这种情况下,我们将迁移称为“AddUrl”。 脚手架代码是说我们需要在 dbo.Blogs 表中添加一个可以保存字符串数据的 Url 列。 如果需要,我们可以编辑脚手架代码,但在这种情况下不需要这样做。

在包管理器控制台中运行 Update-Database 命令。 此命令会将任何挂起的迁移应用到数据库。 我们的 InitialCreate 迁移已经被应用,所以迁移只会应用我们新的 AddUrl 迁移。 提示:您可以在调用 Update-Database 时使用 –Verbose 开关来查看正在对数据库执行的 SQL。

处理模型更改

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM