Sql server 2008 在SSMS中选择行会导致实体框架4失败
我有一个简单的EntityFramework4单元测试,它创建一个新记录,保存它,尝试查找它,然后删除它。一切都很好,除非 。。。我在单元测试中的断点处停止时打开SQL Server Management Studio,并执行一条SELECT语句,该语句返回我刚才创建的行not SELECT FOR UPDATE,not WITH updlock,not transaction,not plain SELECT 如果在尝试查找刚刚创建的行之前执行此操作,则找不到该行。如果我在找到行之后但在删除行之前执行此操作,我确实找到了行,但得到了OptimisticConcurrencyException 这是一贯可重复的 单元测试:Sql server 2008 在SSMS中选择行会导致实体框架4失败,sql-server-2008,entity-framework-4,Sql Server 2008,Entity Framework 4,我有一个简单的EntityFramework4单元测试,它创建一个新记录,保存它,尝试查找它,然后删除它。一切都很好,除非 。。。我在单元测试中的断点处停止时打开SQL Server Management Studio,并执行一条SELECT语句,该语句返回我刚才创建的行not SELECT FOR UPDATE,not WITH updlock,not transaction,not plain SELECT 如果在尝试查找刚刚创建的行之前执行此操作,则找不到该行。如果我在找到行之后但在删除行
[TestMethod()]
public void CreateFindDeleteActiveParticipantsTest()
{
// Setup this test
Participant utPart = CreateUTParticipant();
ctx.Participants.AddObject(utPart);
ctx.SaveChanges();
// External SELECT Point #1:
// part is null
// Find participant
Participant part = ParticipantRepository.Find(UT_SURVEY_ID, UT_TOKEN);
Assert.IsNotNull(part, "Expected to find a participant");
// External SELECT Point #2:
// SaveChanges throws OptimisticConcurrencyException
// Cleanup this test
ctx.Participants.DeleteObject(utPart);
ctx.SaveChanges();
}
出于好奇,你为什么要做这样的测试?它主要测试实体框架本身,微软将为您彻底测试。而且它还有一个数据库依赖关系,这在很多方面都很糟糕。@Matt:首先,测试失败了,很可能很好,所以我得到了它。但主要是一个更复杂的测试的设置和拆除。我把完整的测验浓缩了这么多。@Eric:很公平。我对这个问题是诚实的,不是挖苦人的。IMHO:这听起来像是SQL Server的问题,而不是EF的问题。描述EF正在做的事情,并用两份SSM复制。@Matt:这并不是说你在讽刺:-我测试的目的是证明EF的工作符合我的预期,特别是自从我在过去一周开始深入研究以来,遇到了很多奇怪之处。