Firebird 锁定 EntityFramework
Firebird locking with EntityFramework
我创建了使用 EntityFramework 连接到 Firebird 服务器的简单 WinForms 应用程序。数据库仅包含一个 table 和 4 个字段(Id、FirstName、LastName、Email)。
当我 运行 并行执行三个不同的查询以更新不同的字段时,我遇到了消息 "lock conflict on no wait transaction" 的异常。
是 EF 特定行为还是我需要调整 firebird 服务器以使用字段级锁定?
如果同时更新多个事务中的同一行,则会出现此错误。 Firebird 中没有字段级锁定这样的东西,因为整个行都是版本化的。
您唯一可用的解决方案是:不要这样做,在单个查询中更新所有字段,添加重试机制,或者不要并行触发不同字段的更新。
我创建了使用 EntityFramework 连接到 Firebird 服务器的简单 WinForms 应用程序。数据库仅包含一个 table 和 4 个字段(Id、FirstName、LastName、Email)。 当我 运行 并行执行三个不同的查询以更新不同的字段时,我遇到了消息 "lock conflict on no wait transaction" 的异常。 是 EF 特定行为还是我需要调整 firebird 服务器以使用字段级锁定?
如果同时更新多个事务中的同一行,则会出现此错误。 Firebird 中没有字段级锁定这样的东西,因为整个行都是版本化的。
您唯一可用的解决方案是:不要这样做,在单个查询中更新所有字段,添加重试机制,或者不要并行触发不同字段的更新。