我有一个c#windows服务,它使用PetaPoco更新数据库中的数据,所有这些都包含在一个事务中。但是,我需要数据库在事务运行时可用于查询(Web应用程序,通过ODBC连接运行查询),但如果在提交事务时查询,我的数据库出现“灾难性故障”错误。目前正在针对MS SQL Server进行测试,但也需要针对Oracle数据库进行测试。
有没有办法为PetaPoco交易设置事务隔离级别,在这种情况下这可能是解决方案吗?
答案 0 :(得分:0)
事实证明,“灾难性故障”消息源于数据库中由于PetaPoco和我现有的Web应用程序更新引起的死锁。我通过使用
锁定表来解决这个问题SELECT TOP 1 * FROM [TABLENAME] WITH (TABLOCKX)
在PetaPoco交易开始时查询。