Кэш базы данных, о котором я не знаю?

Я использую asp.net mvc, linq2sql, iis7, и sqlserver выражают 2008.

Я получаю эти неустойчивые ошибки сервера, конфликты первичного ключа на вставке. Я использую другую установку на своем компьютере разработчика, таким образом, я не могу отладить. Через некоторое время они уходят. Перезапуск iis помогает. Я получаю чувство, что существует кэш где-нибудь, что я не знаю. Кто-то может помочь мне разобраться в этих ошибках?

Не может вставить дублирующуюся ключевую строку в объект 'dbo. EnquiryType' с уникальным индексом 'IX_EnquiryType'.

Редактирования относительно ответа Venemos

Действительно ли возможно, что другое приложение также получает доступ к той же базе данных одновременно? Да существует, но не эта конкретная таблица, и никакой не вставляет или обновляет. Существует еще одна таблица, с которой я испытываю ту же проблему, но она имеет отношение к другой части модели.

Как часто в том, какой контекст Вы создаете новый экземпляр DataContext? Только однажды, с помощью шаблона "одиночка".

Первичные ключи сгенерированы базой данных или приложением? База данных.

Какая версия ASP.NET MVC и какую версию.NET Вы используете? RC2 и 3.5.

1
задан Martin 11 June 2010 в 15:56
поделиться

2 ответа

Две догадки для вас:

1) Если у вас есть одноэлементный DataContext, не означает ли это, что он используется всеми потоками?

В справочнике MSDN для DataContext говорится, что экземпляр «рассчитан на выполнение одной единицы работы» и обычно создается «в области действия метода или как член недолговечных классов».

Я бы попытался отойти от одноэлементного шаблона и создавать новый контекст каждый раз, когда это необходимо.

2) Когда вы говорите, что ваши ключи генерируются базой данных, это через поля идентификации или какой-то шаблон «select max + 1»? Если не по идентификатору, то у вас могут быть параллельные соединения, получающие одно и то же значение ключа «следующее». Проверьте уровни изоляции транзакции.

РЕДАКТИРОВАТЬ - после комментария Вы уверены, что нарушение индекса относится к первичному ключу ? При использовании SQL Server Management Studio первичным ключам обычно присваивается префикс PK_ , а для дополнительных индексов используется IX_ . Проверьте поля, которые составляют «IX_EnquiryType», и убедитесь, что это не просто редкая логическая проблема, которая вызывает ваши проблемы.

1
ответ дан 2 September 2019 в 23:49
поделиться

Ну, это может быть по многим причинам. Я задам вам несколько вопросов. Пожалуйста, отредактируйте свой вопрос, добавив информацию о них, и нам будет гораздо проще вам помочь.

  • Возможно ли, что другое приложение одновременно обращается к той же базе данных?
    . Это наиболее вероятная причина. Я тоже с этим сталкивался.
  • Как часто и в каком контексте вы создаете новый экземпляр DataContext?
    Лучше всего было бы создавать новый экземпляр на каждый запрос.
  • Первичные ключи генерируются базой данных или приложением?
  • Какую версию ASP.NET MVC и какую версию .NET вы используете?
1
ответ дан 2 September 2019 в 23:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: