我有一个带代码优先实体框架的MVC Web应用程序。我们将此应用程序作为本地应用程序安装在各种计我进行了迁移以升级数据库(在这种情况下我添加了一个新表),在升级后运行迁移后,我想将初始数据插入数据库,以便用户可以添加/编辑/删除它们但是我不希望表第一次变空。
有没有办法在升级时自动执行此操作而无需手动运行SQL脚本?
答案 0 :(得分:2)
迁移类具有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)
答案 1 :(得分:0)
是的。您基本上编写了一个类来有条件地检查和插入值,然后将此类链接到您的实体框架数据库初始化程序。它在每次执行迁移时运行,但我认为您可以在运行时准确更改(例如,应用程序启动)。
此链接将为您提供粗略的想法: Entity Framework Inserting Initial Data On Rebuild
我在我的电脑上有一个确切的代码示例,但直到明天我都不会参与其中。如果这个链接没有做你想要的,我明天可以发给你一些明确的代码。