你会如何播种用户?我正在关注他们的文档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);
答案 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();
不要按原样使用此代码,您可能希望在创建用户之前检查用户是否已存在。
注意:每次应用程序启动时,此方法都会运行一次。