C# 通过另一个控制器将用户添加到aspnetuser表
我正在使用C#、ASP.NETMVC和.NET4.5。我有一个测试控制器,只有我可以访问,基本上我希望能够创建一次500个测试用户,并将这些用户插入我的C# 通过另一个控制器将用户添加到aspnetuser表,c#,asp.net-mvc,security,controller,asp.net-identity,C#,Asp.net Mvc,Security,Controller,Asp.net Identity,我正在使用C#、ASP.NETMVC和.NET4.5。我有一个测试控制器,只有我可以访问,基本上我希望能够创建一次500个测试用户,并将这些用户插入我的aspnetusers表中,这是在我的测试环境中 在我的控制器中,我有: RegisterViewModel model = new RegisterViewModel(); var s = Guid.NewGuid().ToString(); model.AccountType = accountType; model.Email = s +
aspnetusers
表中,这是在我的测试环境中
在我的控制器中,我有:
RegisterViewModel model = new RegisterViewModel();
var s = Guid.NewGuid().ToString();
model.AccountType = accountType;
model.Email = s + "@email.com";
model.Password = s;
model.ConfirmPassword = s;
var result = new AccountController().Register(model);
这将转到标准寄存器控制器:
public async Task<ActionResult> Register(RegisterViewModel model)
我看到其他人在开始时提到“播种”,但我不想这样做,我有大量的数据需要在用户进入系统后自动/添加,因此需要循环检查输入的每个用户,然后插入更多的数据。我不想手动为每个表创建一个帐户,然后还要在所有其他表中添加所有其他详细信息
当然有一个简单的方法可以做到这一点,有人知道吗?。让你的非同步功能变成这样
public class TestController : Controller
{
ApplicationDbContext db = new ApplicationDbContext();
// GET: Test
public ActionResult Index()
{
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));
string s = "User!1Nom"; // must contain special char if you use asp.net identity default validation
for (int i = 1; i < 501; i++)
{
s = s + i;
var user = new ApplicationUser { UserName = s, Email = s+"@gmail.com" };
var result = userManager.Create(user, s);
}
return View();
}
}
公共类TestController:Controller
{
ApplicationDbContext db=新的ApplicationDbContext();
//获取:测试
公共行动结果索引()
{
var userManager=newusermanager(newuserstore(db));
字符串s=“User!1Nom”;//如果使用asp.net标识默认验证,则必须包含特殊字符
对于(int i=1;i<501;i++)
{
s=s+i;
var user=newapplicationuser{UserName=s,Email=s+“@gmail.com”};
var result=userManager.Create(用户,s);
}
返回视图();
}
}
将您的非同步功能设置为这样
public class TestController : Controller
{
ApplicationDbContext db = new ApplicationDbContext();
// GET: Test
public ActionResult Index()
{
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));
string s = "User!1Nom"; // must contain special char if you use asp.net identity default validation
for (int i = 1; i < 501; i++)
{
s = s + i;
var user = new ApplicationUser { UserName = s, Email = s+"@gmail.com" };
var result = userManager.Create(user, s);
}
return View();
}
}
公共类TestController:Controller
{
ApplicationDbContext db=新的ApplicationDbContext();
//获取:测试
公共行动结果索引()
{
var userManager=newusermanager(newuserstore(db));
字符串s=“User!1Nom”;//如果使用asp.net标识默认验证,则必须包含特殊字符
对于(int i=1;i<501;i++)
{
s=s+i;
var user=newapplicationuser{UserName=s,Email=s+“@gmail.com”};
var result=userManager.Create(用户,s);
}
返回视图();
}
}
您是否尝试在测试控制器中仅使用UserManager实例,而不是尝试实例化AccountController的新实例?感谢您的回复,是的,如果我添加var result=UserManager.CreateAsync(user,model.Password),则不确定我在做什么;我得到一个错误:使用泛型类型“UserManager”需要1个类型参数。我相信您需要创建UserManager的实例。下面的答案与您需要的答案类似。您是否尝试在测试控制器中使用UserManager实例,而不是尝试实例化AccountController的新实例?感谢您的回答,是的,但不确定我在做什么,如果我添加var result=UserManager.CreateAsync(user,model.Password);我得到一个错误:使用泛型类型“UserManager”需要1个类型参数。我相信您需要创建UserManager的实例。下面的答案与您需要的答案类似。