事务不会回滚所有更改

时间:2014-11-25 20:45:57

标签: c# entity-framework transactions entity-framework-6

我正在使用EF6。我创建了一个类并对其进行编码,因此在实例化时它会创建一个名为_ctx的数据库上下文。该类有一个如下所示的Execute()方法:

using (var txn = _ctx.Database.BeginTransaction())
{
    try
    {
        _ctx.Messages.Add(new Message()
            {
                MessageId = messageId,
                ReceivingApplication = receivingApp
            });

        var message = _ctx.Messages.FirstOrDefault(m => m.MessageId == 178);  // This message ID is INVALID
        message.IsValid = hl7Data.IsValid;

        _ctx.SaveChanges();
        txn.Commit();
    }
    catch (Exception ex)
    {
        txn.Rollback();
    }
}

没有ID为178的消息,因此抛出异常然后捕获并执行txn.Rollback()行。令我困惑的是新消息已插入数据库。我原以为这会被回滚,因为它属于交易范围。

我错过了什么?

0 个答案:

没有答案