Создайте пользователя со схемой aspnet и UserRepository/ EF ASPNET MVC 4

У меня есть вопрос для создания пользователя в моем BD. Я использую userRepository для создания пользователя в схеме aspnet.

Поэтому для создания пользователя я должен создать одну строку в таблице aspnet_user и aspnet_membership

userId - это ключ идентификации, так что это мой bdd, который управляет этим... Итак, сейчас у меня есть этот код в моем классе UserRepository:

    public aspnet_User CreateUser(string username, string password, string email)
    {
        using (WebsiteEntities db = new WebsiteEntities())
        {
            aspnet_User user = new aspnet_User();

            user.UserName = username;
            user.Email = email;

            db.aspnet_User.Add(user);
            db.SaveChanges();

            **User u = GetUser(username);**

            Aspnet_Membership member = new Aspnet_Membership();

            member.UserId = u.UserId;
            member.PasswordSalt = CreateSalt();
            member.Password = CreatePasswordHash(password, user.PasswordSalt);
            member.CreateDate = DateTime.Now;
            member.IsApproved = false;
            member.IsLockedOut = false;
            member.LastLockoutDate = DateTime.Now;
            member.LastLoginDate = DateTime.Now;

            db.aspnet_Membership.Add(member);
            db.SaveChanges();

            return u;
        }
    }

Но я не думаю, что это хороший способ создания пользователя с внешним ключом между aspnet_User и aspnet_Membership ... Здесь у меня есть уникальное имя пользователя, но если это не так, я не знаю, как я это сделаю сделанный...

Кто-то может мне помочь? спасибо за вашу помощь

1 ответ

Вы должны добавить нового участника через структуру членства. После этого получите UserId для использования в качестве внешнего ключа.

Это то, что я делаю, это может быть не идеально, но это работает для меня:

  var createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);

  if (createStatus == System.Web.Security.MembershipCreateStatus.Success)
  {
    var newUser = new User();

    newUser.DisplayName = model.DisplayName;
    newUser.Email = model.Email;
    newUser.UserUnits.Add(new UserUnit { UnitId = model.UnitId, Status = (int)UserUnitStatus.Request });

    using(var db = new Entities())
    {

    var temp = db.aspnet_Membership.Single(a => a.LoweredEmail == newUser.Email.ToLower());

    newUser.GUID = temp.UserId;

    db.Users.AddObject(newUser);

    try
    {
      db.SubmitChanges()
    }
    catch
    {
      MembershipService.DeleteUser(model.UserName);
      throw;
    }

    return RedirectToAction("Welcome");
  }
Другие вопросы по тегам