jcv*_*dan 5 c# sql-server-ce-4 entity-framework-4.1
在过去的几个月里,我首次使用Entity Framework代码和sql server CE开发了一个应用程序.我发现2的组合非常有用,与我以前的做事方式(特别是ADO.NET)相比,它允许疯狂地更快的开发时间.
但是,今天早上我和一些同事遇到了一个问题,我们在任何有关SqlServer CE的文档中都没见过.它不能同时处理多个插入!
在我遇到这个问题之前,我认为CE可能成为我的首选数据库.我发现这个的原因是在我的应用程序中我需要立即向Web服务发出多个请求,并且它引入了一些瓶颈,所以我继续使用Parallel.Invoke调用来发出多个请求.
这一切都很好,直到我打开我的应用程序消息记录服务.此时我在发出Web请求时开始出现以下错误:
A duplicate value cannot be inserted into a unique index. [ Table name = Accounts,Constraint name = PK__Accounts__0000000000000016 ]
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlServerCe.SqlCeException: A duplicate value cannot be inserted into a unique index. [ Table name = Accounts,Constraint name = PK__Accounts__0000000000000016 ]
Run Code Online (Sandbox Code Playgroud)
奇怪我想.我的第一个想法是,它必须与之相关DbContext,也许DbContext我使用的是静态的或我Repository班上的其他东西是静态的并导致问题,但在嗅探周围后我发现它与我的代码无关.
然后我把它引起了我的同事的注意,过了一段时间后,它决定它必须是SqlServer CE,并且在我们之后所有设置不同的测试项目试图使用线程重新创建问题它几乎每次都重新创建,并且在使用Sql时Server Express问题并非出现问题.
我认为CE无法处理像这样简单的事情有点奇怪.我的意思是问题不仅仅在于线程问题 - 你是否告诉我它不能用于两个用户可能同时插入表格的Web应用程序... INSANITY!
无论如何,只是想知道是否有其他人遇到像我这样的项目,并且感到震惊(并且生气)它是这样工作的?此外,如果有人能够阐明为什么它以这种方式受限制会很酷.
它看起来像是 SQL CE 中的一个错误。请参阅http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=641518