Я использую asp.net mvc, linq2sql, iis7, и sqlserver выражают 2008.
Я получаю эти неустойчивые ошибки сервера, конфликты первичного ключа на вставке. Я использую другую установку на своем компьютере разработчика, таким образом, я не могу отладить. Через некоторое время они уходят. Перезапуск iis помогает. Я получаю чувство, что существует кэш где-нибудь, что я не знаю. Кто-то может помочь мне разобраться в этих ошибках?
Не может вставить дублирующуюся ключевую строку в объект 'dbo. EnquiryType' с уникальным индексом 'IX_EnquiryType'.
Редактирования относительно ответа Venemos
Действительно ли возможно, что другое приложение также получает доступ к той же базе данных одновременно? Да существует, но не эта конкретная таблица, и никакой не вставляет или обновляет. Существует еще одна таблица, с которой я испытываю ту же проблему, но она имеет отношение к другой части модели.
Как часто в том, какой контекст Вы создаете новый экземпляр DataContext? Только однажды, с помощью шаблона "одиночка".
Первичные ключи сгенерированы базой данных или приложением? База данных.
Какая версия ASP.NET MVC и какую версию.NET Вы используете? RC2 и 3.5.
Две догадки для вас:
1) Если у вас есть одноэлементный DataContext, не означает ли это, что он используется всеми потоками?
В справочнике MSDN для DataContext говорится, что экземпляр «рассчитан на выполнение одной единицы работы» и обычно создается «в области действия метода или как член недолговечных классов».
Я бы попытался отойти от одноэлементного шаблона и создавать новый контекст каждый раз, когда это необходимо.
2) Когда вы говорите, что ваши ключи генерируются базой данных, это через поля идентификации или какой-то шаблон «select max + 1»? Если не по идентификатору, то у вас могут быть параллельные соединения, получающие одно и то же значение ключа «следующее». Проверьте уровни изоляции транзакции.
РЕДАКТИРОВАТЬ - после комментария Вы уверены, что нарушение индекса относится к первичному ключу ? При использовании SQL Server Management Studio первичным ключам обычно присваивается префикс PK_ , а для дополнительных индексов используется IX_ . Проверьте поля, которые составляют «IX_EnquiryType», и убедитесь, что это не просто редкая логическая проблема, которая вызывает ваши проблемы.
Ну, это может быть по многим причинам. Я задам вам несколько вопросов. Пожалуйста, отредактируйте свой вопрос, добавив информацию о них, и нам будет гораздо проще вам помочь.