【问题标题】:Insert initial values after EF migration在 EF 迁移后插入初始值
【发布时间】:2016-02-09 04:48:08
【问题描述】:

我有一个带有代码优先实体框架的 MVC Web 应用程序。我们将此应用程序作为本地应用程序安装在各种计算机中。我进行了迁移以升级数据库(在这种情况下,我添加了一个新表),在升级运行迁移后,我想将初始数据插入数据库,以便用户能够添加/编辑/删除它们,但是我不希望第一次桌子是空的。

有没有办法在升级时自动执行此操作而无需手动运行 SQL 脚本?

【问题讨论】:

  • 在EF中搜索种子数据库,这可能对你有帮助
  • Seed 是不是第一次创建数据库?仅在特定迁移后才需要
  • 而且我不希望我的代码运行不止一次,如果我将来添加更多迁移...

标签: asp.net-mvc entity-framework database-migration


【解决方案1】:

迁移类有up方法,你可以覆盖它并使用SQL插入/更新记录:

public override void Up() {
AddColumn("dbo.Posts", "Abstract", c => c.String());
Sql("UPDATE dbo.Posts SET Abstract = LEFT(Content, 100) WHERE Abstract IS NULL");
}

(Source)

【讨论】:

  • 谢谢!有效!我使用了很多 Sql("INSERT [dbo].....") 并且它做得很完美。
【解决方案2】:

是的,有。您实际上编写了一个类来有条件地检查和插入值,然后将该类链接到您的实体框架数据库初始化程序。每次执行迁移时它都会运行,但我认为您可以在它运行时准确更改(例如应用程序启动)。

这个链接会给你一个粗略的想法: Entity Framework Inserting Initial Data On Rebuild

我的 PC 上有一个确切的代码示例,但我要到明天才能看到它。如果这个链接不能满足你的要求,我明天可以给你发一些代码,肯定会的。

【讨论】:

    猜你喜欢
    • 2019-02-21
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 2014-12-02
    • 2016-01-24
    相关资源
    最近更新 更多