如何使用CodeFirst方法预处理/填充数据库记录
本文关键字:填充 数据库 记录 预处理 何使用 CodeFirst 方法 | 更新日期: 2023-09-27 17:58:24
根据20486B培训课程指南,我正试图在ASP.NET MVC中使用TDD和CodeFirst编写应用程序,但我偶然发现了一个技术/方法论问题,我将在这里尝试描述。当我对应用程序进行编码时,我想预先填充数据库,每次构建/运行/发布应用程序时都会重建该数据库(正如我所理解的CodeFirst)。首先想到的是创建一个initial_data.sql
脚本文件,其中包含一堆表上的插入/更新,这些表将在我的应用程序的每次构建/运行/发布时启动。它可能适用于较小的初始数据集,但当我必须修改应用程序时,该怎么办?因为数据库中已经有了较大的数据集?
每次重建数据库时,我如何"包含"我的initial_data.sql
文件?第二个问题
如何在现有数据库上使用CodeFirst来保存已存在的记录?
覆盖Configuration类中的Seed()
方法并加载其中的任何数据。
Seed()
方法将在每次数据库更新/迁移时运行,因此请确保它能够优雅地处理现有数据,而不会重复插入等。
在Seed()
方法中,您可以访问DbContext()
实例,您可以使用该实例执行SQL,但这也意味着您可以使用普通的EF API更新日期。具体来说,AddOrUpdate()
扩展非常适合用于加载初始数据。