我有一个包含TranRefId的交易表(用于将购买和反转交易分组在一起)。与SQL数据库的接口正在使用Entity Framework 4.我希望能够做两件事......
我担心,因为这是一个Web应用程序,可能会有多个线程同时执行此操作。如果我选择Max Max(TranRefId)并递增该值,则很有可能多个事务将以相同的值结束(由于并发)。 实体框架中是否有任何解决方案来帮助解决这类并发问题?
此外,TranRefId仅适用于该帐户。请参阅下面的示例数据......
交易表(道歉,不知道如何在这里制作表格......)
TranId_的 _ TranRefId 的 _ _account
1_的 _ __ _ ____ 1 的 _ __ < EM> _ __ _ _ 甲
2 的 _ __ _ __ _ __ 1 的 _ __ _ __ _ _ 甲
3 的 _ __ _ __ _ __ 1 的 _ __ _ ____ 乙
4 的 _ __ _ __ _ __ 2 的 _ __ _ ____ 乙
5 的 _ __ _ __ _ __ 1 的 _ __ _ __ _ _C
答案 0 :(得分:1)
如果您不必将TranRefId列作为int,则可以使其成为唯一标识符。然后你可以生成一个新的Guid并将值设置为 - 知道它总是唯一的。
答案 1 :(得分:1)
我猜你可以在桌子上和触发器中添加另一个自动列(yech!),检查是否设置了值,如果没有移动自动列值。