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

时间:2010-06-03 03:56:55

标签: sql-server-2008 entity-framework-4

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

...我在单元测试中的断点处停止时打开SQL Server Management Studio并执行SELECT语句,该语句返回刚刚创建的行( SELECT FOR UPDATE,而不是WITH( updlock),没有事务,只是一个普通的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();
}

0 个答案:

没有答案