c# - Entity Framework 6.1 中的事务范围回滚

标签 c# entity-framework rollback transactionscope change-tracking

我对 TransactionScope 回滚有疑问。

当回滚上下文中对象的 TransactionScope 状态时(changetracker)从添加更改为修改

private xType _x 
{
    get;
    set
}

public void add(x: xtype) 
{
    context.xlist.add(x);
}

public xclass: object 
{
    public xclass() 
    {
        _x = new xtype();
        add(_x);
    }

    public void savechanges; 
    {
        using(transactionscope = new transactionscope()) 
        {
            try 
            {
                context.savechanges();
                x = 0;
                x = x / x;
                transcope.complete();
            } catch 
            {
                transcope.rollback();
            }
        }
    }

项目使用.net 4.0、vs 2013、ef 6.1、SQL Server 2008 Express,并使用UnitOfWork、Repository模式

最佳答案

您在保存对象后对其进行修改。这使它们发生了变化。

当事务回滚时,EF 没有做任何特别的事情。它的内部状态都没有改变。实体对象不会还原。最佳模式是在回滚后放弃 EF 上下文。

您不需要显式回滚。删除捕获。现在它所做的就是吞下所有错误。

关于c# - Entity Framework 6.1 中的事务范围回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31801385/

相关文章:

c# - 使用现有数据库的 ServiceStack 身份验证

c# - 我可以列出所有已注册的事件源吗?

c# - 如何在 Entity Framework 6 代码优先方法中映射选择存储过程?

mysql - 无法将 MySQL 连接用于 Entity Framework 6

wpf - 长期存在的 Entity Framework 上下文 - 避免数据完整性问题的最佳实践

java - 如果不回滚 Hibernate 中的事务会发生什么?

MySql 存储过程、事务和回滚

c# - 锁定数据对象的最佳实践

c# - 如何在 Silverlight 网格上放置椭圆?

java - 在长时间事务中每次查询后是否应该关闭连接?