ray*_*ck2 7 oracle transactionscope rollback devart dotconnect
我正面临着一个让我疯狂几天的问题,希望有人可以帮助我.这里是 ;
我正在使用EF4和oracle数据库,使用dotConnect从devart作为提供者的oracle.我有wcf服务方法,它调用下面的DeleteCabinet方法;
public void DeleteCabinet(string pRID)
{
using(TransactionScope tranScope = new TransactionScope())
{
DBUtils.DeleteCabinetAndShelves(pRecordId);
//throw exception to test record not deleted
throw new Exception("xxx something has happened test xxx");
tranScope.Complete();
}
}
Run Code Online (Sandbox Code Playgroud)
DBUtils.DeleteCabinetAndShelves如下所示;
public void DeleteCabinetAndShelves(string pRecordId)
{
using(var context = new EdrmEntities())
{
var cabinet = context.Cabinets.Include("Shelves").Single(p => p.RID == pCabinetRID);
//mark all cabinet shelves for deletion
if (cabinet.Shelves != null)
{
foreach (var tempShelf in cabinet.Shelves.ToList())
{
context.DeleteObject(tempShelf);
}
}
//mark cabinet for deletion
context.DeleteObject(cabinet);
//save
context.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
当我从我的测试项目中调用DeleteCabinet时,不是wcf调用而是直接方法调用,它可以正常工作.它抛出异常,并且事务被回滚.因此,没有按预期从DB中删除记录
问题是,当我从客户端调用service方法(调用DeleteCabinet)时,抛出异常,但是记录从db中删除.交易不回滚!
似乎调用wcf方法不回滚事务,但它似乎疯了(至少对我来说),有没有人知道为什么会发生这种情况?
提前致谢
您用DevArt和DotConnect标签标记了您的帖子...我想知道这是否是 DevArt 提供程序中的错误,而不是 WCF / Entity Framework / System.Transactions 固有的问题。ObjectContext您可以通过查看使用内置 SQL Server 提供程序(甚至最近发布的Oracle 自己的 EF 提供程序)是否会发生这种情况来测试该理论,并查看问题是否仍然出现。这是我唯一能想到的,因为代码似乎 100% 正确。
| 归档时间: |
|
| 查看次数: |
1693 次 |
| 最近记录: |