/// <summary>
 /// required implementation
 /// </summary>
 /// <param name="usernames">a list of usernames</param>
 /// <param name="roleNames">a list of roles</param>
 public override void AddUsersToRoles(string[] usernames, string[] roleNames)
 {
     foreach (var user in usernames)
     {
         foreach (var role in roleNames)
         {
             var UserID = db.Users.Single(m => m.ID == user);
             var RoleID = db.Roles.Single(m => m.ID == role);
             var g      = new UsersRoles()
             {
                 Users = UserID, Roles = RoleID
             };
             db.UsersRoles.Add(g);
             db.SaveChanges();
         }
     }
 }
    public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
    {
        var args = new ValidatePasswordEventArgs(username, password, true);

        OnValidatingPassword(args);

        if (args.Cancel)
        {
            status = MembershipCreateStatus.InvalidPassword;
            return(null);
        }

        if (!Regex.IsMatch(email, "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$"))
        {
            status = MembershipCreateStatus.InvalidEmail;
            return(null);
        }

        if (RequiresUniqueEmail && GetUserNameByEmail(email) != string.Empty)
        {
            status = MembershipCreateStatus.DuplicateEmail;
            return(null);
        }

        var user = GetUser(username, true);

        if (user == null)
        {
            string MD5Pass = GetMd5Hash(password);
            var    userObj = new User {
                ID = username, Name = username, Pass = MD5Pass, Email = email, Question = passwordQuestion, Answer = passwordAnswer, LastLogin = DateTime.Now
            };

            db.Users.Add(userObj);
            db.SaveChanges();

            status = MembershipCreateStatus.Success;

            return(GetUser(username, true));
        }
        status = MembershipCreateStatus.DuplicateUserName;

        return(null);
    }