何时在EF代码首次迁移方案中调用Seed方法?

Mic*_*hel 20 entity-framework entity-framework-6

我是一个项目的新手,这个类有种子数据:

 internal sealed class Configuration : DbMigrationsConfiguration<DAL.Context>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = true;
        }
Run Code Online (Sandbox Code Playgroud)

这个代码启动种子:

protected override void Seed(Context context)
    {
        try
        {
Run Code Online (Sandbox Code Playgroud)

我的问题是:什么时候Seed调用方法?仅当用户执行update-database并且用户没有数据库(基本上是新用户)时,或者当具有现有数据库的用户调用时update-database

mag*_*gos 20

当涉及到Seed()来自DbMigrationsConfiguration类的迁移方法时,每次Update-Database执行命令时都会调用它.当用户调用它具有现有数据库时.

还有另一种Seed()方法 - 它是一个数据库初始化程序.它在数据库创建时调用,并且不处理现有数据(当DbMigrationsConfiguration处理种子时,检查是否存在指定的实体).

很高兴看到One Unicorn博客获取更多信息.


Muk*_*iya 13

Seed方法用于使用一些起始数据初始化数据库表.每当您运行迁移并更新数据库时,它将运行种子方法.大多数情况下,它在测试阶段使用,您通常需要重新创建数据库并使用示例数据填充数据库表.请通过此链接http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/获取有关代码的更多说明.