如何使用Code First方法预先/填充数据库记录?

时间:2014-04-14 11:28:21

标签: c# asp.net-mvc entity-framework

我正在尝试使用TDD和CodeFirst在ASP.NET MVC中按照20486B培训课程指南编写应用程序,但我偶然发现了一个技术/方法问题,我将在这里尝试描述。当我要编写我的应用程序时,我想预先填充每次构建/运行/发布应用程序时将重建的数据库(因为我理解CodeFirst)。首先想到的是创建一个initial_data.sql脚本文件,其中包含一堆表格上的插入/更新,这些文件将在我的应用程序的每次构建/运行/发布时启动。它可能适用于小的初始数据集,但是当我必须修改应用程序时,数据库中已经有更大的数据集?

每次重建数据库时,如何“包含”我的initial_data.sql文件? 和第二个问题 我如何在现有数据库上保存CodeFirst,保留已存在的记录?

1 个答案:

答案 0 :(得分:4)

覆盖Configuration类中的Seed()方法并加载其中的所有数据。

每次更新数据库/迁移时都会运行Seed()方法,因此请确保它正常处理现有数据,而不会重复插入等。

Seed()方法中,您可以访问可用于执行SQL的DbContext()实例,但这也意味着您可以使用普通的EF API来更新日期。具体而言,AddOrUpdate()扩展名非常适合用于加载初始数据。