1

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

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

4

1 回答 1

0

您应该通过成员资格框架添加新成员。完成后获取 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");
  }
于 2012-11-19T03:22:46.300 回答