我正在编写一个WCF服务方法来更新两个表(标题和详细信息)。我需要确保操作是原子的,所以我开始了一个围绕插入的事务。
但是,由于这是一种 Web 服务方法,因此其他用户可以在使用此事务时调用相同的函数。
一个额外的信息,我正在使用一种自定义的ORM框架,它将连接存储在会话中以供重用。
当第二个 Web 方法调用进来时,我得到以下异常:
System.Data.SqlClient.SqlException (0x80131904):不允许新事务,因为会话中还有其他线程在运行。
我知道这是因为第一次调用开始的事务还没有完成。
我想了解在 Web 服务中使用数据库事务的最佳实践是什么,以及我是否可以在不必每次都创建新连接的情况下解决这种情况。