ASP.NET 5(MVC6)如何为用户播种

时间:2016-02-19 03:10:16

标签: asp.net-core asp.net-core-mvc

你会如何播种用户?我正在关注他们的文档here,但他们只展示了如何对ApplicationDbContext直接插入的数据进行播种。

在帐户控制器中,通过DI创建UserManager。如何在Seed方法中实例化UserManager?

 public class SeedData
{
    public static void Initialize(IServiceProvider serviceProvider)
    {
        var context = serviceProvider.GetService<ApplicationDbContext>();
        var userManager = serviceProvider.GetService<UserManager<ApplicationUser>>();

然后在Configure方法的Startup.cs中:

SeedData.Initialize(app.ApplicationServices);

2 个答案:

答案 0 :(得分:5)

在configure方法的startup.cs中,您可以添加以下代码以获取UserManager,并从那里为用户播种。

var userManager = app.ApplicationServices.GetService<UserManager<ApplicationUser>>();

答案 1 :(得分:0)

您可以在

行中创建一个类
    public class UserSeed
    {
        private ApplicationDbContext _context;
        private UserManager<ApplicationUser> _mgr;

        public UserSeed(ApplicationDbContext context,UserManager<ApplicationUser> userManager)
        {
            _context = context;
            _mgr = users;
        }

        public void UserSeedData()
        {

            var user = new ApplicationUser { UserName = "foo@foo.com", Email = "foo@foo.com" };

            var result = _mgr.CreateAsync(user,"fooPassword");
......
......

       }
}

在startup.cs的configure方法中,将userSeed通过DI,如

public async void Configure(...., UserSeed userSeedData)

然后在你调用的方法里面

userSeedData.UserSeedData();

不要按原样使用此代码,您可能希望在创建用户之前检查用户是否已存在。

注意:每次应用程序启动时,此方法都会运行一次。