Я хочу проверить уникальное ограничение ключа, но я не знаю, какой метод использовать. Какой метод лучше? Я использую С#, 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
Я редко проверяю уникальные ограничения ключа в коде. Фактически, это действительно пустая трата времени, если несколько клиентов могут одновременно обновлять данные. Скажите, что вы проверяете, чтобы вы могли добавить сотрудника Saeid Mirzaei и обнаружили, что ключ не используется. Поэтому вы добавляете его. Вы все еще можете получить проблему с ключом, если кто-то еще входит в нее, и вы все равно получите исключение. Вы можете обрабатывать исключение в TSQL или С#, но вам очень нужно использовать обработку исключений для надежного кода.
Это зависит от ваших требований, но обычно обработка в Exception - лучший выбор. Это будет наиболее эффективным и надежным. Я предполагаю, что вы подразумеваете под этим Исключение, которое будет выбрано из-за уникального ограничения.
Я предлагаю вам создать индекс Create Unique в столбце Name в SQL Server и вместо триггера insert для сохранения RTRIM(LTRIM(Inserted.name))
вместо столбца name в вашей таблице.
Также вы можете иметь клиентский контроль для уменьшения сетевого подключения к базе данных.
Я предпочитаю метод 1, проверьте свой код и добавьте ограничение UNIQUE в свой столбец.