繁体   English   中英

MVC实体框架中的种子方法

[英]Seed Method in MVC Entity Framework

seed method在我的应用程序的迁移文件夹中的主要用途是什么? 在我的Configuration.cs文件中,我在种子方法中得到了这个 -

protected override void Seed(TestApplication.DataBaseContext.AppDBContext context)
        {
            //  This method will be called after migrating to the latest version.

            //  You can use the DbSet<T>.AddOrUpdate() helper extension method 
            //  to avoid creating duplicate seed data. E.g.
            //
            //    context.People.AddOrUpdate(
            //      p => p.FullName,
            //      new Person { FullName = "Andrew Peters" },
            //      new Person { FullName = "Brice Lambson" },
            //      new Person { FullName = "Rowan Miller" }
            //    );
            //
            SeedMemebership();
        }

        private void SeedMemebership()
        {
            if (!WebSecurity.Initialized)
            {
                WebSecurity.InitializeDatabaseConnection("DefaultConnection",
                    "UserProfile", "UserId", "UserName", autoCreateTables: true);
            }
            var roles = (SimpleRoleProvider)Roles.Provider;
            var membership = (SimpleMembershipProvider)Membership.Provider;

            if (!roles.RoleExists("Administrator"))
            {
                roles.CreateRole("Administrator");
            }
            if (membership.GetUser("admin", false) == null)
            {
                membership.CreateUserAndAccount("admin", "password");
            }
            if (!roles.GetRolesForUser("admin").Contains("Administrator"))
            {
                roles.AddUsersToRoles(new[] { "admin" }, new[] { "Administrator" });
            }
        }

正如任何人都可以知道的SeedMembership() ,它会调用创建角色的SeedMembership()和不存在的用户。 这个seed()什么时候被调用,它做了什么? 我尝试在这个方法上设置一个断点,但它从来没有真正被击中。 我尝试搜索其他SO问题以获得进一步的解释,但它有助于帮助。

谢谢。

在Package Manager控制台中运行update-database ,将调用configuration.cs seed()方法。

如果您更改Entity Framework以使用MigrateDatabaseToLatestVersion数据库初始化程序,那么它也会在应用程序启动时调用。

实体框架的迁移功能包括一个Seed方法,您可以使用应用程序所需的初始静态数据填充数据库。

更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM