Я пишу простое. NET Core 3.1 API-приложение. Я хотел бы проверить MailAddress с помощью C#, встроенного в RegularExpressionAttribute, а затем сохранить мои проверенные объекты в базу данных с помощью EF Core. Вот мой пример кода:
public class UserEntity
{
[Key]
public int UserId { get; set; }
[Required]
[StringLength(maximumLength: 100, MinimumLength = 3)]
public string Username { get; set; }
[Required]
[Column(TypeName = "varchar(100)")]
[RegularExpression(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$")]
public string MailAddress { get; set; }
[Required]
[MaxLength(64)]
public byte[] PasswordHash { get; set; }
}
Я ожидал, что если я собираюсь присвоить регулярное выражение, не соответствующее значению, будет сгенерировано исключение.
var newUser = new UserEntity()
{ MailAddress = signUpData.MailAddress, Username = signUpData.Username, PasswordHash = passwordHash };
Здесь ничего не происходит, Приложение продолжает выполнение, а UserEntity сохраняется в моей базе данных. Я хотел бы, чтобы было выдано исключение, если проверка почты не удалась. Как этого добиться? Должен ли я явно вызывать Regex.Match () вместо использования атрибута, чтобы проверить правильность переданной строки? Что я делаю не так?