【问题标题】:Entity Framework 6 (ASP .NET MVC) blocks the entire applicationEntity Framework 6 (ASP .NET MVC) 阻止整个应用程序
【发布时间】:2014-12-03 09:32:24
【问题描述】:

当实体框架抛出错误时(即不遵守最大长度),每次调用 SaveChanges() 都会生成旧的错误消息,不允许正确执行新的 sql 查询。

每个用户都被触动,需要重新加载应用程序!

我错过了什么?

这里有一些代码:

        Society _new = new Society ()
        {
            Nom = "TEST TEST TEST TEST TEST", // MAX LENGTH 10
            Adresse = "45,  rue Paris",                
            ....                
        };

        try
        {
            context.Society.Add(_new);
            context.SaveChanges(); 
        }
        catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
        {                
            //handle error
        }
        catch (Exception e)
        {
            //handle error
        }

报错后,每次我调用 context.SaveChanges(); (即使对于其他对象)实体都会产生相同的错误,就像上下文被卡住一样。

【问题讨论】:

  • 你能给我们看一些代码吗?

标签: asp.net-mvc entity-framework error-handling


【解决方案1】:

可能是因为您在捕获错误后向上下文和事件添加了不正确的对象,该对象仍然存在于上下文中,因此下一次调用 SaveChanges() 错误也会出现

【讨论】:

    【解决方案2】:

    这个错误是由于我一直使用相同的 DbContext 造成的。

    以这种方式(因此,从不调用方法 .Dispose() )错误阻止了我使用的唯一上下文。

    服务方法必须在整个过程中使用相同的 DbContext 实例 业务交易的持续时间。这样所有的变化 对您的持久模型进行跟踪并提交给 底层数据存储或以原子方式回滚。

    欲了解更多信息:http://mehdi.me/ambient-dbcontext-in-ef6/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      相关资源
      最近更新 更多