Orm 如何识别事务中相同或不同的PetaPoco连接?

Orm 如何识别事务中相同或不同的PetaPoco连接?,orm,database-connection,petapoco,Orm,Database Connection,Petapoco,在本例中,我有两个数据库对象(db和Owndb)。有时事务无法正常工作,因为两个连接不同。因此,我需要通过connect\u id识别每个连接,或者请分享您的观点或想法。由于建议通过请求使用相同的连接,我有以下两种静态方法: var db=(PetaPoco.Database)HttpContext.Current.Items["application_db"]; using(var t=db.GetTransaction()) { // some code db.Save(ob

在本例中,我有两个数据库对象(db和Owndb)。有时事务无法正常工作,因为两个连接不同。因此,我需要通过connect\u id识别每个连接,或者请分享您的观点或想法。

由于建议通过请求使用相同的连接,我有以下两种静态方法:

var db=(PetaPoco.Database)HttpContext.Current.Items["application_db"];
using(var t=db.GetTransaction())
{
    // some code
    db.Save(obj1);
    OwnExecute();
    db.Save(obj3);
    t.Complete();
}
public void OwnExecute(obj2)
{
    // some code
    var Owndb=(PetaPoco.Database)HttpContext.Current.Items["appdb"];
    Owndb.Save(obj2);
}
然后您就可以确信您使用的是相同的连接

public static class DbHelper {
    public static Database CurrentDb() {
        if (HttpContext.Current.Items["CurrentDb"] == null) {
            var retval = new DatabaseWithMVCMiniProfiler("MainConnectionString");
            HttpContext.Current.Items["CurrentDb"] = retval;
            return retval;
        }
        return (Database)HttpContext.Current.Items["CurrentDb"];
    }

    public static Database NewDb() {
        return new DatabaseWithMVCMiniProfiler("MainConnectionString");
    }

谢谢,但我目前正在检查(db==(PetaPoco.Database)HttpContext.Current.Items[“appdb”])然后是t.Complete(),否则是t.RollBack()。
var db=dbHelper.CurrentDb();
using(var t=db.GetTransaction())
{
    // some code
    db.Save(obj1);
    OwnExecute();
    db.Save(obj3);
    t.Complete();
}
public void OwnExecute(obj2)
{
    // some code
    var Owndb=dbHelper.CurrentDb();
    Owndb.Save(obj2);
}