2015-02-16 6 views
1

У меня возникла странная проблема с Entity Framework и SQL Server, которые я не могу понять.Entity Framework Вставка нескольких копий одних и тех же данных

Я строю интернет-магазин в ASP.NET MVC 5.

Я вставив статистики о поиске в таблицу под названием SearchResults - он имеет такую ​​структуру:

[SearchID] [int] IDENTITY(1,1) NOT NULL, 
[SearchTerm] [varchar](5000) NULL, 
[SearchDate] [datetime] NULL, 
[Results] [int] NULL 

Я просто делаю простой EF топка с этим C# код в поисковом действии контроллера, который получает размещённый на со сроком поиска:

var s = new SearchResult() { SearchTerm = search, SearchDate = DateTime.Now, Results = results }; 
      db.SearchResults.Add(s); 
      db.SaveChanges(); 

результатов является ИНТОМ с графом продукты найденных при поиске.

Всякий раз, когда я выполняю поиск, тот же поиск вставляется ровно 3 раза, с немного разными временами для каждой вставки. Странная часть заключается в том, что иногда она будет вставлять только одну запись (как и ожидалось). Я не могу понять, почему это делается.

Я запустил трассировку SQL, и когда она вставляет 3, есть только один вызов БД. Это то, что в след:

exec sp_executesql N'INSERT [dbo].[SearchResults]([SearchTerm],[SearchDate], [Results]) 
VALUES (@0, @1, @2) 
SELECT [SearchID] 
FROM [dbo].[SearchResults] 
WHERE @@ROWCOUNT > 0 AND [SearchID] = scope_identity()',N'@0 varchar(5000),@1 datetime2(7),@2 int',@0='dew',@1='2015-02-16  16:32:53.4649185',@2=2 

Странная часть является DateTime показано на вставке значение, для третьей вставки.

У меня полная потеря за то, почему это происходит. Я пробовал все, что мог придумать, но я все еще получаю повторы на вставке.

+1

Есть ли триггеры на столе? –

+0

Нет триггеров или внешних ключей. Это автономный стол. – AndrewC73

ответ

2

Возможно, вы смотрите на неправильный фрагмент кода. Если вы регистрировали или отлаживали вызовы контроллера, сколько раз выполнялся первый фрагмент кода, который вы опубликовали?

+0

Да, тем больше я тестирую его, кажется, что в макете запускается несколько вызовов. Если я установил макет страницы результатов равным null, я не получу дублированные результаты. Спасибо за предложение. Я еще не понял, что вызывает его, но это просто сообщение формы для контроллера. – AndrewC73

+0

По причинам, которые не имеют для меня никакого смысла, переключение формы поиска из сообщения на пост, поскольку метод заставил проблему уйти. – AndrewC73

+0

Это не имеет никакого смысла. Вы заявили *, есть только один вызов БД *, и изменение доступа к сообщению не может иметь такого воздействия. –

Смежные вопросы