ORMLite OpenTransaction批量插入&回到新的Guids

时间:2014-01-18 07:21:46

标签: c# servicestack ormlite-servicestack

我正在尝试使用ServiceStack ORMLite来运行它:

        using (var o = Conn.OpenDbConnection()) {
            using (var t = o.OpenTransaction()) {
              foreach(var item in items) o.Insert(item);
              t.Commit();
              //now, how do I get back the new item ids I have just inserted?
            }
        }

在代码中,如何取回批量新ID?还注意到非批处理版本GetLastInsertId()只返回一个Long。我的Id类型是GUID时该怎么办?谢谢。

此外,当您在这里时,我还想问,如果t.Commit();失败,则会抛出异常,是否需要调用t.Rollback();?既然交易结束了呢?

1 个答案:

答案 0 :(得分:1)

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