2014-04-14 112 views
0

我试图用20486B培训课程指南在ASP.NET MVC中使用TDD和CodeFirst编写应用程序,但是我偶然发现了一个技术/方法问题,我将在这里描述这个问题。当我编写我的应用程序时,我想预先填充每次构建/运行/发布应用程序时重建的数据库(正如我对CodeFirst的理解)。首先想到的是创建一个initial_data.sql脚本文件,其中包含一堆插入/更新表,这些脚本文件将在我的应用程序的每个构建/运行/发布时触发。它可能适用于较小的初始数据集,但是当我需要修改应用程序时,该应用程序会在数据库中拥有更多的数据集?如何使用CodeFirst方法预/填充数据库记录?

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

回答

4

覆盖Configuration类中的Seed()方法,并在其中加载任何数据。

Seed()方法将运行每次数据库更新时间/迁移正在运行,以确保它正常处理现有的数据,而无需重复插入等

Seed()方法,你可以使用一个DbContext()实例,该实例你可以用它来执行SQL,但这也意味着你可以使用普通的EF API来更新日期。具体来说,AddOrUpdate()扩展可用于加载初始数据。