我想检查唯一键约束,但我不知道使用哪种方法。 哪种方法更好? 我使用c#,EF,SQL Server
第一种方法:
bool contactExists = _db.Contacts.Any(contact => contact.ContactName.Equals(ContactName));
if (contactExists)
{
return -1;
}
else
{
_db.Contacts.Add(myContact);
_db.SaveChanges();
return myContact.ContactID;
}
第二种方法:
Handle in exception.
第三种方法: 用T-SQL检查
If Exists (
Select Name
From dbo.ContentPage
Where Name = RTRIM(LTRIM(N'page 1'))
)
开始 选择' True' 结束 其他 开始 选择“假”' 端
答案 0 :(得分:3)
我很少检查代码中的唯一键约束。事实上,如果多个客户端可以同时更新数据,那实际上是浪费时间。假设您检查以确保您可以添加员工#Saeid Mirzaei'并发现密钥未被使用。所以你添加它。如果其他人在此期间输入了密钥问题,您仍然可以获得密钥问题,并且最终无法获得异常。您可以在TSQL或C#中处理异常,但您几乎需要使用异常处理来实现健壮的代码。
答案 1 :(得分:1)
这取决于您的要求,但通常在异常中处理是最佳选择。这将是最有效和最可靠的。我假设你的意思是由于唯一约束而抛出的异常。
答案 2 :(得分:0)
我更喜欢方法1,检查代码并在列中添加UNIQUE约束。
答案 3 :(得分:0)
我建议你在SQL Server的Name列上创建Unique索引,而不是在表上保存RTRIM(LTRIM(Inserted.name))
列而不是name列的插入触发器。
此外,您可以使用客户端控制来减少与数据库的网络连接。