我遇到了一个我无法弄清楚的实体框架和SQL Server的奇怪问题。
我正在ASP.NET MVC 5中构建一个在线商店。
我将有关搜索的统计信息插入名为SearchResults的表中 - 它具有以下结构:
[SearchID] [int] IDENTITY(1,1) NOT NULL,
[SearchTerm] [varchar](5000) NULL,
[SearchDate] [datetime] NULL,
[Results] [int] NULL
我只是在控制器的“搜索”操作中使用此C#代码执行简单的EF插入,该搜索将使用搜索词发布:
var s = new SearchResult() { SearchTerm = search, SearchDate = DateTime.Now, Results = results };
db.SearchResults.Add(s);
db.SaveChanges();
结果是一个int,其中包含搜索找到的产品数。
每当我进行搜索时,相同的搜索会恰好插入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
奇怪的部分是插入中显示的日期时间是第三个插入的值。
我完全不知道为什么会这样。我已经尝试了所有我能想到的东西,但我仍然会在插入时重复。
答案 0 :(得分:2)
也许你正在查看错误的代码。 如果您记录或调试了对控制器的调用,您发布的第一段代码会执行多少次?