我是项目的新成员,种子数据有这个类:
internal sealed class Configuration : DbMigrationsConfiguration<DAL.Context>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
这个代码启动种子:
protected override void Seed(Context context)
{
try
{
我的问题是:何时调用Seed
方法?仅当用户执行update-database
并且用户没有数据库(基本上是新用户)时,或者当具有现有数据库的用户调用update-database
时?
答案 0 :(得分:20)
对于来自Seed()
类的迁移DbMigrationsConfiguration
方法,每次执行Update-Database
命令时都会调用它。当用户调用它有现有数据库时。
还有另一个Seed()
方法 - 它是一个数据库初始化程序。它在数据库创建时调用,并且不处理现有数据(来自DbMigrationsConfiguration
的种子处理它们,检查是否存在指定的实体)。
很高兴查看One Unicorn blog以获取更多信息。
答案 1 :(得分:13)
种子方法用于使用一些起始数据初始化数据库表。每当您运行迁移并更新数据库时,它将运行种子方法。大多数情况下,它在测试阶段使用,您通常需要重新创建数据库并使用示例数据填充数据库表。请仔细阅读此链接http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/以获取有关代码的更多说明。