c# - 我应该使用什么方法来通知用户该电子邮件已被使用
问题描述
我正在使用剃须刀页面构建一个.net api,我想在创建过程中验证电子邮件输入,这样就不会将电子邮件重复存储到数据库中。我在数据库设计中使用了 UNIQUE 参数,但收效甚微。这是我当前使用剃须刀页面(CRUD)搭建的用户类。
public class User
{
[Required]
public int ID { get; set; }
[Required,
StringLength(20, MinimumLength = 2,
ErrorMessage ="Name has to be between 2 and 20 characters long")]
public string Name { get; set; }
[Required,
DataType(DataType.EmailAddress),
RegularExpression(@"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*"+ "@"+ @"((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$",
ErrorMessage = "Invalid Email Format")]
public string Email { get; set; }
[Required,
DataType(DataType.Date),
Display(Name = "Date Of Birth")]
public DateTime DateOfBirth { get; set; }
[Display(Name = "Additional Info"),
DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}",
ApplyFormatInEditMode = true)]
public string AdditionalInfo { get; set; }
[Required,
StringLength(24, MinimumLength = 8,
ErrorMessage = "Password has to be between 8 and 24 characters long"),
DataType(DataType.Password)]
public string Password { get; set; }
}
所以我像这样在我的 SQL 数据库中尝试了 UNIQUE 属性。
CREATE TABLE [dbo].[User] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (20) NOT NULL,
[Email] NVARCHAR (50) NOT NULL UNIQUE,
[DateOfBirth] DATETIME2 (7) NOT NULL,
[AdditionalInfo] NVARCHAR (100) NULL,
[Password] NVARCHAR (28) NOT NULL,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED ([ID] ASC));
在这种情况下检查电子邮件是否已在使用中的最佳做法是什么?
解决方案
推荐阅读
- particles - 有没有办法在像素着色器中读取深度缓冲区?[DX12]
- docker - Docker COPY sh 脚本不起作用(未找到)
- r - dplyr - 对 str_flatten 向量列进行排序
- python - 在没有 GIL 的情况下在 Cython 中并行化
- ruby-on-rails - Table_for 中关联资源的 ActiveAdmin 默认操作
- reactjs - 在 .map 循环中反应不必要的重新渲染
- javascript - 在使用 iframe 时键入安全的方法来检查 instanceof?
- c# - 用户 'root'@'localhost' 的 ASP.NET MVC MySQL 访问被拒绝(使用密码:否)
- excel - 将一张工作表复制到另一张工作表时,我的 VBA 代码会跳转到用户窗体中间宏,即使代码没有规定这一点
- java - Springboot 基本服务抛出 404(但它出现在 Swagger-ui 中)[已解决]