Sql server 2008 在SSMS中选择行会导致实体框架4失败

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 如果在尝试查找刚刚创建的行之前执行此操作,则找不到该行。如果我在找到行之后但在删除行

我有一个简单的EntityFramework4单元测试,它创建一个新记录,保存它,尝试查找它,然后删除它。一切都很好,除非

。。。我在单元测试中的断点处停止时打开SQL Server Management Studio,并执行一条SELECT语句,该语句返回我刚才创建的行not SELECT FOR UPDATE,not WITH updlock,not transaction,not plain SELECT

如果在尝试查找刚刚创建的行之前执行此操作,则找不到该行。如果我在找到行之后但在删除行之前执行此操作,我确实找到了行,但得到了OptimisticConcurrencyException

这是一贯可重复的

单元测试:

[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的工作符合我的预期,特别是自从我在过去一周开始深入研究以来,遇到了很多奇怪之处。