C# 如何使用CodeFirst方法预处理/填充数据库记录?

C# 如何使用CodeFirst方法预处理/填充数据库记录?,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我正试图按照20486B培训课程指南,在ASP.NET MVC中使用TDD和CodeFirst编写应用程序,但我偶然发现了一个技术/方法问题,我将在这里介绍。当我编写我的应用程序时,我想预填充数据库,每次我构建/运行/发布应用程序时都会重新构建数据库(我理解CodeFirst)。首先想到的是创建一个initial_data.sql脚本文件,其中包含一系列表的插入/更新,这些表将在每次构建/运行/发布我的应用程序时启动。它可能适用于较小的初始数据集,但当我必须修改应用程序时,会发生什么情况呢?因为

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

每次重建数据库时,如何“包括”我的
初始\u data.sql文件?
第二个问题
如何在现有数据库上对已存在的记录进行CodeFirst保存?

重写Configuration类中的
Seed()
方法并加载其中的任何数据

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

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

覆盖配置类中的
Seed()
方法并加载其中的任何数据

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

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