我正在使用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
            }),
    };

最佳答案

你能在存储过程中做到吗?您可以使用scope_identity或更好的output子句来获取所需的值。所有表的所有插入都在一个事务中,如果其中任何一个失败,则可以回滚。

10-07 12:34