我希望在注册成功后将用户ID插入多个表
public async Task<ActionResult> Register(RegisterViewModel model , RoleViewModel role )
{
if (ModelState.IsValid)
{
ApplicationDbContext context = new ApplicationDbContext();
var user = new ApplicationUser {
UserName = model.UserName,};
Activity activity = new Activity
{
RoleId = model.RoleName,
UserId = model.Id,
};
entities.activities.Add(activity);
entities.SaveChanges();
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded )
{
result = await UserManager.AddToRolesAsync(user.Id, model.RoleName);
await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
这是AcountController,没有发生任何事情我想在用户表中将Id插入到Activity Table中的UserId
你至少有两个选择
第一。如果您使用的是Code First,则可以与ApplicationUser类一起创建Your Activity类。看看这里https://go.microsoft.com/fwlink/?LinkID=317594
第二。您可以像在此处一样检索用户ID
result = await UserManager.AddToRolesAsync(user.Id, model.RoleName);
var currentId = user.Id;
此外,您的活动插入必须在创建用户之后,就像下面的代码一样
public async Task<ActionResult> Register(RegisterViewModel model, RoleViewModel role)
{
if (ModelState.IsValid)
{
ApplicationDbContext entities = new ApplicationDbContext();
var user = new ApplicationUser {UserName = model.UserName};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded )
{
Activity activity = new Activity
{
RoleId = model.RoleName,
UserId = user.Id,
};
entities.activities.Add(activity);
entities.SaveChanges();
result = await UserManager.AddToRolesAsync(user.Id, model.RoleName);
await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
}
你实例化ApplicationDbContext context
但你不使用它。然后你使用entities
,但它来自哪里?只有这里显示的控制器代码,我猜你应该这样做:
context.activities.Add(activity);
context.SaveChanges();
最后,你传递RoleViewModel role
,但你不使用它。也许你可以删除它?