gpt4 book ai didi

c# - 防止重复的电子邮件地址进入数据库

转载 作者:行者123 更新时间:2023-11-30 20:36:38 25 4
gpt4 key购买 nike

我想防止重复条目。如果电子邮件地址已存在,我想显示一条消息,内容为“数据库中已存在电子邮件地址”

这是我的 CustomerController 中的创建方法:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "LastName,FirstName,EnrollmentDate,Email")] Customer customer)
{
try
{
if (ModelState.IsValid)
{
db.Customers.Add(customer);
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (DataException)
{
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
}

return View(customer);
}

我如何添加检查以查看数据库中是否已存在电子邮件地址?

最佳答案

您可以在保存之前检查是否存在具有给定电子邮件地址的客户。

var customer = db.Customers.FirstOrDefault(x => x.EmailAddress == Email);

if (customer == null)
{
// save changes
}

或者通过唯一约束在数据库中处理这个问题。然后您可以捕获并处理异常。

USE TestDB;
GO
CREATE TABLE Users
(
UserID int NOT NULL IDENTITY(1,1),
Name varchar(100) NOT NULL,
Surname varchar(100) NOT NULL,
EmailAddress varchar(100) NOT NULL,
CONSTRAINT AK_UnqueEmail UNIQUE(EmailAddress)
);
GO

如果您将唯一约束应用于现有表,您将按如下方式构建代码:

 USE TestDB; 
GO
ALTER TABLE Users
ADD CONSTRAINT AK_UniqueEmail UNIQUE (EmailAddress);
GO

引用号:https://lgitsmart.com/2014/10/18/sql-server-tip-preventing-duplicate-records-using-the-unique-constraint/

关于c# - 防止重复的电子邮件地址进入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36705785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com