gpt4 book ai didi

c# - 想要在事务中的后续插入中使用从插入返回的标识

转载 作者:太空狗 更新时间:2023-10-29 23:34:26 25 4
gpt4 key购买 nike

我正在使用 Rob Conery 的 Massive用于数据库访问。我想围绕几个插入包装一个事务,但第二个插入使用从第一个插入返回的标识。如何在交易中做到这一点对我来说并不明显。一些帮助将不胜感激。

var commandList = new List<DbCommand>
{
contactTbl.CreateInsertCommand(new
{
newContact.Name,
newContact.Contact,
newContact.Phone,
newContact.ForceChargeThreshold,
newContact.MeterReadingMethodId,
LastModifiedBy = userId,
LastModifiedDate = modifiedDate,
}),
branchContactTbl.CreateInsertCommand(new
{
newContact.BranchId,
ContactId = ????, <-- how to set Id as identity from previous command
}),
};

最佳答案

在这两个插入之间进行查询,这个来自 Massive 的方法可能会有用:

public object Scalar(string sql, params object[] args) {
object result = null;
using (var conn = OpenConnection()) {
result = CreateCommand(sql, conn, args).ExecuteScalar();
}
return result;
}

你的 sql 将是 = "select scope_identity()"

更新 2013/02/26

再次查看 Massive 代码,没有可靠的方法来检索最后插入的 ID。

上面的代码只有在建立“select scope_identity()”的连接被合并时才有效。 (它必须与进行插入的连接相同)。

大量table.Insert(..) 方法返回包含ID 字段的Dynamic,该字段填充有“SELECT @@IDENTITY”。它从全局范围获取最后插入的 ID,这是明显的错误(在多线程场景中很明显)。

关于c# - 想要在事务中的后续插入中使用从插入返回的标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5411697/

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