我有一个包含 TranRefId 的 Transaction 表(用于将购买和撤消交易组合在一起)。与 SQL 数据库的接口使用的是 Entity Framework 4。我希望能够做两件事......
- 显式指定 TranRefId 的值
- 未指定时自动生成一个值(无论是通过查询 MAX 并递增还是通过其他方式)。
由于这是一个 Web 应用程序,我担心可能会有多个线程同时执行此操作。如果我选择 Max(TranRefId) 并增加值,则很有可能多个事务最终会得到相同的值(由于并发性)。 实体框架中是否有任何解决方案可以帮助解决此类并发问题?
此外,TranRefId 仅特定于帐户。请参阅下面的示例数据...
交易表 (我很抱歉,不知道如何在此处制作表......)
TranId_ _ TranRefId _ _Account
1_ _ __ _ ____ 1 _ __ _ __ _ _ A
2 _ __ _ __ _ __ 1 _ __ _ __ _ _ A
3 _ __ _ __ _ __ 1 _ __ _ ____ B
4 _ __ _ __ _ __ 2 _ _ _ ____ B
5 _ __ _ ___ __ 1 _ __ _ __ _ _C