实体框架6(ASP .NET MVC)阻止整个应用程序

时间:2014-12-03 09:32:24

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

当实体框架抛出错误(即不遵守最大长度)时,对 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(); (即使对于其他对象)实体也会生成相同的错误,就像上下文被卡住一样。

2 个答案:

答案 0 :(得分:0)

可能是因为你在捕获错误后向上下文和事件添加了不正确的对象,这个对象仍然在上下文中,所以在下一次调用SaveChanges()时也会出现错误

答案 1 :(得分:0)

错误是由于我总是使用相同的DbContext。

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

  

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

有关详细信息:http://mehdi.me/ambient-dbcontext-in-ef6/