Вставьте идентификатор пользователя в несколько таблиц, используя MVC Identity - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу вставить идентификатор пользователя в несколько таблиц после успешной регистрации

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, ничего не происходит. Я хочу вставить идентификатор из таблицы пользователей в UserId в таблице активности

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

У вас есть как минимум два варианта для этого

Первый.если вы используете Code First, вы можете создать класс Your Activity вместе с классом ApplicationUser.посмотри как тут https://go.microsoft.com/fwlink/?LinkID=317594

Второй.Вы можете получить идентификатор пользователя так, как вы это сделали здесь

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);
   }
}
0 голосов
/ 15 апреля 2019

Вы создаете экземпляр ApplicationDbContext context, но не используете его.Затем вы используете entities, но откуда это?Имея только код контроллера, показанный здесь, я думаю, вы должны сделать:

context.activities.Add(activity);
context.SaveChanges();

Наконец, вы передаете RoleViewModel role, но вы его не используете.Может быть, вы можете удалить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...