我在數據層加入多個事務跨實例EF連接
namespace DAL
{
public abstract class BaseDalObj:IDisposable
{
protected Auto.Entities entities;
public BaseDalObj()
{
entities= new Auto.Entities();
}
public void Dispose()
{
}
}
public class Class1: BaseDalObj
{
public void Save(object a)
{
entities.SaveItem(a);
}
}
public class Class2: BaseDalObj
{
public void Save(object b)
{
entities.SaveItem(b);
}
}
}
namespace Business
{
public class BusinessLL
{
public Object a,b;
public BusinessDAL()
{
a = new Object();
b = new Object();
}
public void Save()
{
using(var dbObj1 = new DAL.Class1())
{
dbObj1.Save(a);
using(var dbObj2 = new DAL.Class2())
{
dbObj2.Save(b);
}
}
}
}
}
以下設置什麼,我想一些方法來調用都保存功能,但同樣的TransactionScope內。
我不知道如何使用EF做到這一點。我已經研究過使用TransactionScope類,但是我無法理解它是如何工作的。
我一直在尋找使用entities.Connection.BeginTransaction()
而是返回一個DbTransaction
和TransactionScope
只接受Transaction
型類
任何幫助,或者可以點我在正確的方式將真正幫助指針。
什麼你不明白使用'TransactionScope'? – 2012-04-24 10:43:03
@LadislavMrnka我不明白如何從一個實體實例獲取事務加入到TransactionScope,就好像我調用entities.Connection.BeginTransaction()它返回一個DBTransaction但TransactionScope只接受一個事務類。 我是否正確思考如果我調用Transaction.Current我會得到使用entities.Connection.BeginTransaction() – Qpirate 2012-04-24 10:51:38
創建的事務TransactionScope將自己處理事務創建。你不需要做任何事情,但是當你在兩個上下文中同時執行時,它很可能會啓動分佈式事務,並且需要MSDTC。 – 2012-04-24 10:58:26