【问题标题】:Create a User with aspnet schema and UserRepository/ EF ASPNET MVC 4使用 aspnet 架构和 UserRepository/EF ASPNET MVC 4 创建用户
【发布时间】:2012-11-18 23:59:46
【问题描述】:

我有一个关于在我的 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 之间的外键创建用户的好方法......在这里,我有一个唯一的用户名,但如果不是,我不知道我会怎么做...

有人可以帮助我吗?感谢您的帮助

【问题讨论】:

    标签: sql-server asp.net-mvc linq repository entity-framework-mapping


    【解决方案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");
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多