gpt4 book ai didi

c# - MVC Entity Framework 中的种子方法

转载 作者:太空狗 更新时间:2023-10-29 20:17:02 25 4
gpt4 key购买 nike

我的应用程序的迁移文件夹中的seed 方法 的主要用途是什么?在我的 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(),它创建了一个角色和一个用户(如果它不存在)。这个 seed() 什么时候被调用,它做了什么?我试着在这个方法上设置一个断点,但它从未真正被击中。我尝试搜索其他 SO 问题以获得进一步的解释,但它没有帮助。

谢谢。

最佳答案

configuration.cs 中的这个 seed() 方法会在您在程序包管理器控制台中运行 update-database 时调用。

如果您将 Entity Framework 更改为使用 MigrateDatabaseToLatestVersion database initializer,它也会在应用程序启动时调用.

关于c# - MVC Entity Framework 中的种子方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21900083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com