gpt4 book ai didi

c# - 如何在不删除数据库的情况下更新 C# 中对 SampleData Seed 所做的更改?

转载 作者:太空狗 更新时间:2023-10-30 00:54:15 25 4
gpt4 key购买 nike

我是 Entity Framework 和 MVC 4 的新手,我一直在关注 Microsoft 网站上的 Music Store 应用程序教程(根据我的需要进行了一些轻微的调整)。我有一个使用 Code First 创建的远程数据库。这包括一个 SampleData 类,其中包含有关歌曲、艺术家、流派等的信息……并在创建所有表后将其填充到数据库中。这工作正常。

但是,现在我对我的 SampleData 类做了一些更改,我希望它用该数据更新数据库(删除已删除的行,插入添加的新行,等等...) 没有删除数据库。我的数据库管理员不允许我运行 DROP 命令,因此对我的种子使用 DropCreateDatabaseAlways 是行不通的。我已经在本地完成了这个并且它有效,删除数据库,用表(模型是相同的)和新的示例数据再次创建它。

有什么方法可以做到这一点而不必在每次我想更新示例数据时都删除数据库?也许代码优先迁移(即使我的模型没有改变,只是数据)?

最佳答案

此方法已弃用,直接跳到底部。

您可以使用代码优先数据迁移。

为了更新您的示例数据(在 EF 中称为种子数据),您可以在 Migrations 文件夹中编辑 Configuration.cs 并添加或更新您想要更改的数据,如下所示:

protected override void Seed(icicle.Models.icicleEntities context)
{
// This method will be called after migrating to the latest version.

// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.

context.Widgets.AddOrUpdate(new Widget()
{
Id = 1,
Name = "My Really Awesome Widget"
});
}

在新范式下,您只需转到工具->库包管理器->包管理器控制台并运行以下脚本行:

Update-Database -ConnectionStringName "YourConnectionStringNameGoesHere" -Verbose

关于c# - 如何在不删除数据库的情况下更新 C# 中对 SampleData Seed 所做的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13589904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com