使用 ef删除(执行失败,用 try catch捕获了)后再修改的时候,出现了本应该是删除的报错

问题描述

//删除方法publicActionResultDelPermission(){stringstrPId=Request.Form["pid"];try{intpid=int.Parse(strPId);//根据id去删除intres=OperateContext.Current.BllSession.IOu_PermissionBLL.DelBy(p=>p.pid==pid);returnOperateContext.Current.RedirectAjax("ok","恭喜,删除成功..",null,"");}catch(Exceptione){returnOperateContext.Current.RedirectAjax("err","您现在删除的权限正在被角色使用,请先取消角色中的这个权限!",null,"");}finally{}}#endregion//修改方法[HttpPost]publicActionResultEditPermission(MODEL.Ou_Permissionmodel){OperateContext.Current.BllSession.IOu_PermissionBLL.RestartContext();//去数据库修改intres=OperateContext.Current.BllSession.IOu_PermissionBLL.ModifyBy(model,p=>p.pid==model.pid,newstring[]{"pParent","pName","pAreaName","pControllerName","pActionName","pFormMethod","pOperationType","pOrder","pIsShow","pRemark"});if(res>0){returnRedirect("/admin/sys/Permission?ok");}else{returnRedirect("/admin/sys/Permission?err");}}#endregion

1运行项目后一上来直接修改没有问题,删除成功后编辑也不会出问题2故意让删除出错后,再编辑哪一条都会出问题3再编辑就成这样了4.经过调试,发现在dal层的ef的上下文中有删除状态的缓存问题的重点来了,怎么清空这个ef中的缓存啊,也就是要清除那个什么deletedEnitityStroe,找了半天没找到什么好方法

解决方案

解决方案二:
ef的context对象的.Refresh(System.Data.Objects.RefreshMode.StoreWins);方法;你的这个错,感觉是外键关联到别的表里,其他表里的数据没删,你就想删主表里的数据啊。不过,你们这个框架,在web的服务器端为context做了缓存,目的是便于数据更新,但实际会发生各种问题。正确的做法还是应该通过每次newcontext后attatch上去要处理的实体对象。
解决方案三:
使用事务操作,在catch内进行ROLLBACK操作

时间: 2024-09-11 09:38:33

使用 ef删除(执行失败,用 try catch捕获了)后再修改的时候,出现了本应该是删除的报错的相关文章

servlet内部跳转if语句不执行,也不报错

问题描述 servlet内部跳转if语句不执行,也不报错 } else if ("shoppingCartBooks".equals(flag)) { String username = req.getParameter("username"); System.out.println(username+"****"); if (username != null) { List list = bs.getAllBooksInShoppingCart

完美解决python遍历删除字典里值为空的元素报错问题_python

exam = { 'math': '95', 'eng': '96', 'chn': '90', 'phy': '', 'chem': '' } 使用下列遍历的方法删除: 1. for e in exam: 2. if exam[e] == '': 3. del exam[e] 结果出现下列错误,怎么解决: Traceback (most recent call last): File "Untitled.py", line 3, in <module> for e in

ios-使用FMDB删除数据失败

问题描述 使用FMDB删除数据失败 删除数据库表中的所有数据,使用FMDB,使用了下面的代码,但是没有实现: -(BOOL) deleteAll { FMDatabase *db = [FMDatabase databaseWithPath:[Utility getDatabasePath]]; [db open]; BOOL success = [db executeUpdate:@"TRUNCATE TABLE customers"]; [db close]; return suc

Python多线程执行失败

问题描述 Python多线程执行失败 我使用python编程实现查找某根目录下所有重复文件的功能,新手小白. 但是通过单步调试后,发现thread2.start()好像完全没有执行,直接就跳出循环了. 请高手看看~ 解决方案 附代码 -*- coding: utf-8 -*- import threading import os import os.path import sys import hashlib def findFile1(rootPath, fileSeq, delSeq): d

SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败

原文:SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败 先感谢一下我的同事们最先发现此问题,鸣谢:向飞.志刚.海云 最近在生产环境发现一个诡异的问题: 环境:WINDOWS 2012+SQLSERVER 2012 SP1,双节点的故障转移群集+单节点的SQLSERVER 2012 SP1实例(镜像) 生产数据库是从SQLSERVER 2008R2迁移到2012的,迁移过程很顺利,按照一般经验,可能导致数据库所有者丢失,因此在迁移后手动修改数据库所有者为sa,与

权限-php move_uploaded_file总是执行失败

问题描述 php move_uploaded_file总是执行失败 如题,在做文件上传,可是不管文件格式怎么样都上传不成功.求大神指教!上传html代码如图:处理文件代码如图:最后执行结果如下图:路径相关如下图:ps:系统是centos 7服务器是apache,/var/www/html/fundamentals_of_compiling的权限是用root用户chmod 777 赋予的,其下的upload路径也是一样,实在研究不明白了,求帮助! 解决方案 服务器上执行下setenforce 0

java File delete()执行失败原因(转)

java.io.File里的delete操作很实用也很常用,可以用来删除单独的文件和某一目录.但有时候会出现delete失败的情况,出现这种情况的原因一般有以下几种:1.删除时还有其他程序在使用该文件,此时将无法正确删除2.没有close关闭和该文件相关的所有输入输出流等,导致无法删除(这一点是最容易忘记的,你犯的可能就是这一条)3.当删除某一目录时,必须保证该目录下没有其他文件才能正确删除,否则将删除失败.这里可以采用listFiles对目录下的文件或者目录进行处理.下面给出一个具体的例子:

客户端-libssh2_userauth_publickey_fromfile 执行失败

问题描述 libssh2_userauth_publickey_fromfile 执行失败 请教哪位大神,我在使用libssh2编写sftp客户端时执行到libssh_2_userauth_publickey_fromfil函数总是失败的,请问为什么呢?调用都是代码就是libssh2自带的测试案例. if (libssh2_userauth_publickey_fromfile(*session, strUser, "~/.ssh/id_rsa.pub", "~/.ssh/i

zabbix server-service zabbix_server start执行失败!

问题描述 service zabbix_server start执行失败! 1.start zabbix_server 2.下面是日志信息 3.怎么解决?谢谢 解决方案 对应的文件权限设置有问题 不能访问导致启动失败