Как проверить ограничение уникального ключа [дубликата]

1

Я хочу проверить уникальное ограничение ключа, но я не знаю, какой метод использовать. Какой метод лучше? Я использую С#, 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" End Else Begin Выберите "False" End

Теги:
sql-server
entity-framework

4 ответа

3
Лучший ответ

Я редко проверяю уникальные ограничения ключа в коде. Фактически, это действительно пустая трата времени, если несколько клиентов могут одновременно обновлять данные. Скажите, что вы проверяете, чтобы вы могли добавить сотрудника Saeid Mirzaei и обнаружили, что ключ не используется. Поэтому вы добавляете его. Вы все еще можете получить проблему с ключом, если кто-то еще входит в нее, и вы все равно получите исключение. Вы можете обрабатывать исключение в TSQL или С#, но вам очень нужно использовать обработку исключений для надежного кода.

1

Это зависит от ваших требований, но обычно обработка в Exception - лучший выбор. Это будет наиболее эффективным и надежным. Я предполагаю, что вы подразумеваете под этим Исключение, которое будет выбрано из-за уникального ограничения.

0

Я предлагаю вам создать индекс Create Unique в столбце Name в SQL Server и вместо триггера insert для сохранения RTRIM(LTRIM(Inserted.name)) вместо столбца name в вашей таблице.

Также вы можете иметь клиентский контроль для уменьшения сетевого подключения к базе данных.

0

Я предпочитаю метод 1, проверьте свой код и добавьте ограничение UNIQUE в свой столбец.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню