Linq to sql SQL Server Compact(CE)是否在另一个事务作用域中支持RequiresNew事务作用域?

Linq to sql SQL Server Compact(CE)是否在另一个事务作用域中支持RequiresNew事务作用域?,linq-to-sql,sql-server-ce,transactionscope,Linq To Sql,Sql Server Ce,Transactionscope,下面是一个使用SQLServerCE3.5SP1的非常简单的示例,我尝试在现有事务中使用新事务 using (var db = new MyDataContext(<connection string>)) using (var ts = new TransactionScope()) { db.Thing.InsertOnSubmit(new Thing()); db.SubmitChanges(); using (var ts2 = new Transac

下面是一个使用SQLServerCE3.5SP1的非常简单的示例,我尝试在现有事务中使用新事务

using (var db = new MyDataContext(<connection string>))
using (var ts = new TransactionScope())
{
    db.Thing.InsertOnSubmit(new Thing());
    db.SubmitChanges();
    using (var ts2 = new TransactionScope(TransactionScopeOption.RequiresNew))
    {
        db.Thing.InsertOnSubmit(new Thing());
        db.SubmitChanges();   // exception here
        ts2.Complete();
    }
    [... do more stuff ...]
    ts.Complete();
}
使用(var db=new MyDataContext())
使用(var ts=new TransactionScope())
{
db.Thing.InsertOnSubmit(newthing());
db.SubmitChanges();
使用(var ts2=newtransactionscope(TransactionScopeOption.RequiresNew))
{
db.Thing.InsertOnSubmit(newthing());
db.SubmitChanges();//此处出现异常
ts2.Complete();
}
[…做更多的事情…]
ts.完成();
}
这导致在第二次调用“db.SubmitChanges()”时出现错误“无法在事务作用域中登记连接对象”

声明SQL CE不支持一个事务中的两个连接,但我这里只有一个(除非SubmitChanges()创建另一个)

上面的想法是,如果子事务提交,那么即使外部事务失败,它也会保持提交状态。据我所知,这是一个

声称SQLCE本身就支持嵌套事务,因此我认为上述操作应该是可能的。它是?如果是这样,我如何修改代码以使其工作


编辑:While与另一篇MSDN文章相矛盾,说嵌套事务不受支持。也许这就是问题所在?

不,不能使用嵌套事务。在SQL CE数据库上运行此代码,您将看到错误消息

BEGIN TRANSACTION;
SELECT 'GOT 1';
BEGIN TRANSACTION;
SELECT 'GOT 2';
主要错误0x80004005,次要错误27994
Microsoft SQL Server Compact不支持嵌套事务。

不,不能使用嵌套事务。在SQL CE数据库上运行此代码,您将看到错误消息

BEGIN TRANSACTION;
SELECT 'GOT 1';
BEGIN TRANSACTION;
SELECT 'GOT 2';
主要错误0x80004005,次要错误27994
Microsoft SQL Server Compact不支持嵌套事务。

在您的情况下,不应使用TransactionScope


您必须调用DataContext.Transaction=DataContext.Connection.BeginTransaction并控制您自己的事务。

在您的情况下,不应使用TransactionScope

您必须调用DataContext.Transaction=DataContext.Connection.BeginTransaction并控制您自己的事务。

可能的解决方案:

可能的解决方案: