如何识别交易中相同或不同的 PetaPoco 连接?
How to identify PetaPoco connections same or different within a transaction?
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);
}
在这种情况下,我有两个数据库对象(db 和 Owndb)。有时事务无法正常工作,因为两个连接是 different.So 我需要通过 connect_id 来识别每个连接,或者请分享您的意见或想法。
由于建议通过请求使用相同的连接,我有这两个静态方法:
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");
}
然后您就可以确信您使用的是同一个连接
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);
}
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);
}
在这种情况下,我有两个数据库对象(db 和 Owndb)。有时事务无法正常工作,因为两个连接是 different.So 我需要通过 connect_id 来识别每个连接,或者请分享您的意见或想法。
由于建议通过请求使用相同的连接,我有这两个静态方法:
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");
}
然后您就可以确信您使用的是同一个连接
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);
}