c# - 如何检查唯一键约束

标签 c# sql sql-server entity-framework

<分区>

我想检查唯一键约束,但我不知道该使用哪种方法。 哪种方法更好? 我使用 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'))
    )

开始 选择“真” 结尾 别的 开始 选择“假” 结束

最佳答案

我很少检查代码中的唯一键约束。事实上,如果多个客户端可以同时更新数据,那确实是在浪费时间。假设您检查以确保可以添加员工“Saeid Mirzaei”,但发现 key 未在使用中。所以你添加它。如果同时有人输入它,您仍然会遇到重复 key 问题,而您最终还是会遇到异常。您可以在 TSQL 或 C# 中处理异常,但您几乎需要使用异常处理来获得健壮的代码。

关于c# - 如何检查唯一键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24773988/

相关文章:

C# - 如何获取也是类的类成员的属性?

c# - 使用c#在asp.net中获取Bootstrap下拉复选框列表检查值的检查项

php - 如果一行中的 2 列与另一行匹配,则将其视为重复条目 MySQL

sql-server - SQL Server - 对客户端数据的强大保护( Multi-Tenancy )

c# - WinForm 组合框上的空错误

mysql - 在 SQL 中迭代和更新表

mysql - 使用 MySQL 查询模拟移动时间线

sql - 将 sql_variant 转换为以 varchar 形式提供的 data_type

sql-server - 可序列化事务适合这种场景吗?

c# - 从预设位置开始迭代,到达终点后继续迭代