代码之家  ›  专栏  ›  技术社区  ›  keyboardP

插入数据库前的对象ID(Linq to SQL)

  •  0
  • keyboardP  · 技术社区  · 15 年前

    据我所知,在 SubmitChanges() 方法被调用。如果是这样的话,我想增加一些方法的效率。我可以取回 ID 在插入对象之前?我不想打电话 子改变() 两次,如果我可以在ID实际插入数据库之前知道它的值。从逻辑的角度来看,只有打开到数据库的连接才能找到值,但是插入过程也必须进行吗?

    谢谢

    3 回复  |  直到 15 年前
        1
  •  1
  •   Mitch Wheat    15 年前

    解决这一问题的常用技术是在应用程序层(如guid)中生成一个唯一的标识符,并将其用作 ID . 这样就不必在后续调用中检索ID。

    当然,使用guid作为主键可能有其缺点。如果您决定这样做,请查找梳guid。

        2
  •  0
  •   BarsMonster    15 年前

    好吧,这里有一个问题:在插入到数据库之前,您不知何故地得到了ID,并用它做了一些处理。在同一时间,另一个线程也做了同样的事情,而get的id是相同的,这就产生了冲突。

    也就是说,我不认为有一种简单的方法可以做到这一点。

        3
  •  0
  •   doug_w    15 年前

    我不一定推荐这个,但我已经看到了。您可以使用存储过程和表来保存下一个ID的值,将自己的ID计算为整数。存储过程从表中选择要返回的值,然后递增该值。这张桌子看起来像是

    Create Table Keys(
    name varchar(128) not null primary key,
    nextID int not null
    )
    

    在执行此操作之前,需要注意的是,如果选择然后在两个不同的批中更新,则可能会发生密钥冲突。这两个步骤都需要作为原子事务处理。