我有一个简单的例子,我试图使用ASP.NET MVC 1,Sqlite和ADO.NET Entity Framework创建一个spike,因为我需要一个可以在.NET 3.5上运行的可移植数据存储区(DB)
我有简单的尖峰工作(保存,删除,修改记录),但我只是注意到一些奇怪的东西。我正在使用一个非常简单的存储库模式来操纵数据。
如果您运行该网站,则会显示已创建的新记录。但是我注意到如果我刷新太快(例如在浏览器中按住F5进行复制),它将抛出以下异常。
存储更新,插入或删除语句会影响意外的行数(0)。自实体加载后,实体可能已被修改或删除。刷新ObjectStateManager条目。
我觉得这显然是我的Index操作保存/删除测试记录的方式的并发问题。如何修改我的存储库,以便我仍然可以利用这种模式(我喜欢并认为相当干净)还能防止这种竞争条件?我继续前进并压缩下面的解决方案,该解决方案应该开箱即用(Visual Studio 2008)