Я пытаюсь написать собственный класс проверки, который подтверждает, что электронная почта еще не используется. Для этого у меня есть метод, который подсчитывает профили пользователей, которые имеют адрес электронной почты в вопросе. Достаточно просто, но если пользователь обновляет свой профиль, мне нужно исключить его профиль из числа, о котором я упоминал. Для этого я написал следующий метод:
public static bool IsEmailUnique(string email, int userprofileId)
{
int count = -1;
using (var db = new TRDataContext())
{
count = (from u in db.Userprofiles
where u.email == email &&
(userprofileId == 0 || u.userprofile_id != userprofileId)
select u).Count();
}
return count == 0;
}
Это хорошо работает в пользовательском классе валидатора для новых пользователей, так как все, что мне нужно сделать, это передать 0 в userprofile_id.
public class EmailValidatorAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null)
return false;
return Userprofile.IsEmailUnique(value.ToString(), 0);
}
}
и реализовано так
[DisplayName("Email Address")]
[Required(ErrorMessage = "Required")]
[RegularExpression(EmailRegex, ErrorMessage = "Invalid email address")]
[EmailValidator(ErrorMessage = "Already in use")]
public string email { get; set; }
Однако теперь мне нужно передать в EmailValidator userprofile_id этого текущего пользователя. Мне трудно разобраться с этим.
Любая помощь будет принята с благодарностью.
Спасибо!