public async Task <ActionResult> Create(Person person) { var authDB = new ApplicationDbContext(); var db = new StudentAbsenceEntities(); ViewBag.Roles = new SelectList(authDB.Roles, "Name", "Name"); if (!db.IsLoginUnique(person.Login)) { ModelState.AddModelError(string.Empty, "Пользователь с таким именем уже существует!"); } if (ModelState.IsValid) { var store = new UserStore <ApplicationUser>(authDB); var manager = new ApplicationUserManager(store); var authUser = new ApplicationUser() { UserName = person.Login, Email = person.Email }; await manager.CreateAsync(authUser, person.Password); var role = authDB.Roles.First(r => r.Name == person.Role); var savedAuthUser = authDB.Users.First(u => u.UserName == person.Login); authUser.Roles.Add(new IdentityUserRole() { RoleId = role.Id, UserId = savedAuthUser.Id }); authDB.SaveChanges(); var savedPerson = db.Person.Add(person); var userRole = db.Role.First(r => r.Role1 == person.Role); db.User.Add(new User() { login = person.Login, PersonId = savedPerson.Id, Role = userRole }); db.SaveChanges(); if (person.Role == "Студент") { db.Student.Add(new Student() { PersonId = savedPerson.Id, RecordBookNumber = "0000000", BirthDate = DateTime.Today, GroupId = null }); } else { if (person.Role == "Преподаватель") { db.Teacher.Add(new Teacher() { PersonId = savedPerson.Id }); } } db.SaveChanges(); return(RedirectToAction("Index")); } return(View(person)); }