带有实体框架的可选AutoIncrement

时间:2012-09-06 14:33:54

标签: sql entity-framework entity-framework-4

我有一个包含TranRefId的交易表(用于将购买和反转交易分组在一起)。与SQL数据库的接口正在使用Entity Framework 4.我希望能够做两件事......

  1. 明确指定TranRefId
  2. 的值
  3. 当没有指定值时,自动生成一个值(无论是通过查询MAX还是递增或通过其他方式)。
  4. 我担心,因为这是一个Web应用程序,可能会有多个线程同时执行此操作。如果我选择Max Max(TranRefId)并递增该值,则很有可能多个事务将以相同的值结束(由于并发)。 实体框架中是否有任何解决方案来帮助解决这类并发问题?


    此外,TranRefId仅适用于该帐户。请参阅下面的示例数据......

    交易表(道歉,不知道如何在这里制作表格......)

    TranId_的 _ TranRefId _ _account

    1_的 _ __ _ ____ 1 _ __ < EM> _ __ _ _
    2
    _ __ _ __ _ __ 1 _ __ _ __ _ _
    3
    _ __ _ __ _ __ 1 _ __ _ ____
    4
    _ __ _ __ _ __ 2 _ __ _ ____
    5
    _ __ _ __ _ __ 1 _ __ _ __ _ _C

2 个答案:

答案 0 :(得分:1)

如果您不必将TranRefId列作为int,则可以使其成为唯一标识符。然后你可以生成一个新的Guid并将值设置为 - 知道它总是唯一的。

答案 1 :(得分:1)

我猜你可以在桌子上和触发器中添加另一个自动列(yech!),检查是否设置了值,如果没有移动自动列值。