/// <summary>
        /// Removes the specified user names from the specified roles for the configured applicationName.
        /// </summary>
        /// <param name="userNames">A string array of user names to be removed from the specified roles.</param>
        /// <param name="roleNames">A string array of role names to remove the specified user names from.</param>
        public override void RemoveUsersFromRoles(string[] userNames, string[] roleNames)
        {
            using (InventoryManagementEntities context = new InventoryManagementEntities())
            {
                IQueryable <aspnet_Roles> roles = context.aspnet_Roles.Where(MatchRoleApplication()).Where(ProviderUtils.BuildContainsExpression <aspnet_Roles, string>(r => r.RoleName, roleNames));
                if (roles.Count() != roleNames.Length)
                {
                    throw new ProviderException("Role not found.");
                }

                IQueryable <aspnet_Membership> users = context.aspnet_Membership.Include("Role").Where(MatchUserApplication()).Where(ProviderUtils.BuildContainsExpression <aspnet_Membership, string>(u => u.aspnet_Users.UserName, userNames));
                if (users.Count() != userNames.Length)
                {
                    throw new ProviderException("User not found.");
                }

                try
                {
                    foreach (aspnet_Membership user in users)
                    {
                        foreach (aspnet_Roles role in roles)
                        {
                            /*if (!user.Role.IsLoaded)
                             * {
                             *  user.Role.Load();
                             * }*/

                            if (user.aspnet_Users.aspnet_Roles.Contains(role))
                            {
                                user.aspnet_Users.aspnet_Roles.Remove(role);
                            }
                        }
                    }

                    context.SaveChanges();
                }
                catch (Exception ex)
                {
                    if (WriteExceptionsToEventLog)
                    {
                        WriteToEventLog(ex, "RemoveUsersFromRoles");
                    }
                    else
                    {
                        throw;
                    }
                }
            }
        }
        /// <summary>
        /// Adds the specified user names to the specified roles for the configured applicationName.
        /// </summary>
        /// <param name="userNames">A string array of user names to be added to the specified roles.</param>
        /// <param name="roleNames">A string array of the role names to add the specified user names to.</param>
        public override void AddUsersToRoles(string[] userNames, string[] roleNames)
        {
            using (InventoryManagementEntities context = new InventoryManagementEntities())
            {
                IQueryable <aspnet_Roles> roles = context.aspnet_Roles.Where(MatchRoleApplication()).Where(ProviderUtils.BuildContainsExpression <aspnet_Roles, string>(r => r.RoleName, roleNames));
                if (roles.Count() != roleNames.Length)
                {
                    throw new ProviderException("Role not found.");
                }

                IQueryable <aspnet_Membership> users = context.aspnet_Membership.Where(MatchUserApplication()).Where(ProviderUtils.BuildContainsExpression <aspnet_Membership, string>(u => u.aspnet_Users.UserName, userNames));
                if (users.Count() != userNames.Length)
                {
                    throw new ProviderException("User not found.");
                }

                try
                {
                    foreach (aspnet_Membership user in users)
                    {
                        foreach (aspnet_Roles role in roles)
                        {
                            // Check whether user is already in role
                            if (IsUserInRole(user.aspnet_Users.UserName, role.RoleName))
                            {
                                throw new ProviderException(string.Format("User is already in role '{0}'.", role.RoleName));
                            }

                            user.aspnet_Users.aspnet_Roles.Add(role);
                        }
                    }

                    context.SaveChanges();
                }
                catch (Exception ex)
                {
                    if (WriteExceptionsToEventLog)
                    {
                        WriteToEventLog(ex, "AddUsersToRoles");
                    }
                    else
                    {
                        throw;
                    }
                }
                finally
                {
                    //context..Connection.Close();
                }
            }
        }