我正在使用EF 6 Database.SqlQuery语句来执行带有已实现的错误和事务处理,具有打开和关闭事务的存储过程(处理多个记录,如果有错误只有一个记录只能回滚这个,并且承诺完成其他任何没有错误的事情)。EF ef Database.SqlQuery内部回滚到执行的存储过程
List<T> _result = this.Database.SqlQuery<T>(sqlStatement, parameters).ToList();
EF使用自己的交易,Database.SqlQuery的执行,但是当错误occures,我也回滚到存储过程中这种回滚也适用于EF transacton。所以我得到的follwoing例外:
System.Data.SqlClient.SqlException(0x80131904):当前 事务不能被提交并不能支持该操作写入 到日志文件。回滚事务。
如何防止EF在这种情况下使用自己的事务,或防止过程关闭EF的事务?
不要在你的存储过程回滚。抛出异常并让客户端处理它。 – usr 2014-09-01 13:34:49
我不想更改SP错误处理,因为只能对其中的一个处理记录进行回滚。我希望没有错误的记录被提交。 – 2014-09-01 13:41:02
然后,您需要使EF无法启动交易。如果存在外部事务,则所有行都将全部或全部不存在。 – usr 2014-09-01 13:52:21