gpt4 book ai didi

c# - 如何从MVC5中的配置将新用户存储到数据库中?

转载 作者:行者123 更新时间:2023-12-01 18:54:54 24 4
gpt4 key购买 nike

我有一个继承自 ApplicaitonUser 的模型,定义如下:

public class Business : ApplicationUser
{
...
}

然后,在我的配置中,我从 CSV 文件中读取所有信息,并创建业务对象列表。然后,我想将他们全部创建为新用户并添加到数据库中,并给他们一个默认密码(稍后我通过电子邮件向列表中的所有用户填写他们的密码,以便他们可以更改它)。我想我需要使用 UserManager.CreateAsync 方法,但我似乎无法从我的配置文件中引用它。

目前,我有这样的东西,我从 CSV 文件中读取了所有业务特定信息:

        foreach (string csv in csvs)
{
using (CsvReader reader = new CsvReader(csv))
{
foreach (string[] values in reader.RowEnumerator)
{
businesses.Add(new Business
{
BusinessName = values[0],
Email = values[1],
Address = values[2],
City = values[3],
StateID = states.Single(s => s.StateCode == values[4]).StateID,
Zip = values[5],
Phone = values[6],
Fax = values[7],
SICCode = values[8],
Description = values[9],
Website = values[10]
});
}
}
}

然后,我想我需要一个类似于下面的 foreach 语句来遍历所有业务,但我不知道这是否是正确的方法,即使是,我如何访问Configuration.cs 文件中的 UserManager?我似乎无法从配置访问它。

        foreach (Business b in businesses)
{
var result = await UserManager.CreateAsync(b, "MyPassword");
}

最佳答案

对于访问UserManager,您可以创建一个新的:

new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));

或者从当前 HttpContext 获取一个(如果在 Startup.Auth.cs 中设置正确的话):

HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>()

现在,如果这是种子数据,这种逻辑可能不应该出现在 Web 应用程序本身中。如果您确实想通过读取 csv 文件以编程方式进行播种,请考虑编写一个与您的 csv 文件本地一起的单独的控制台应用程序,并在需要为特定数据库执行此播种时运行此应用程序。

然后,您还可以使用 UserManager 跳过此 ApplicationUser 基础结构,并且为了简单起见,仅生成您正在使用的数据库的数据库优先模型,并让 EF 像往常一样插入数据。

编辑:哦,是的,密码的事情。因此,您仍然可以使用 UserManager 基础架构来解决所有问题,或者您可以使用 UserManager.PasswordHasher.HashPassword("Password")如果您想绕过 UserManager 的其他部分,请手动进行。

关于c# - 如何从MVC5中的配置将新用户存储到数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25774765/

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