gpt4 book ai didi

sql-server - 如何在ServiceStack OrmLite中检索自增Id?

转载 作者:行者123 更新时间:2023-12-02 01:14:14 25 4
gpt4 key购买 nike

对于具有标识的表:

    [AutoIncrement]
public int Id { get; set;}

当向数据库中插入新行时,检索对象 ID 的最佳方法是什么?

例如:

db.Insert<> (new User());

插入后Id的值为0,但在数据库中显然不是这样的。我能看到的唯一可能性如下:

Id = (int)db.GetLastInsertId();

但是我不认为这是一个安全的决定。如果同时发生数百个插入,则可能会返回另一个插入的 Id。在 EF 中,当您执行插入操作时,系统会为您设置 Id。

有人知道解决这个问题的最佳方法吗?

最佳答案

在默认使用参数化查询的ServiceStack.OrmLite v4中,db.Save()中有几个选项可以自动填充自动增量ID,例如:

db.Save(item);
item.Id //populated with the auto-incremented id

否则,您可以使用以下方法选择最后一个插入 ID:

var itemId = db.Insert(item, selectIdentity:true);

这里是more examples showcasing OrmLite's new API's .

<小时/>

对于 OrmLite v3

正确的调用是db.GetLastInsertId(),对于 SQL Server 来说,它在底层调用 SELECT SCOPE_IDENTITY()它返回该连接最后插入的ID。

这是安全的,因为可能发生的所有其他并发插入都使用不同的数据库连接。为了让其他人使用相同的连接,需要将其处理并释放回池中。

关于sql-server - 如何在ServiceStack OrmLite中检索自增Id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14305232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com