localdb上的BeginTransaction

时间:2016-05-13 09:28:26

标签: c# entity-framework localdb

我与LocalDB数据库有连接:

Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-mysite-20160510105433.mdf

我首先使用实体​​框架代码和以下代码:

var tran = this.context.Database.BeginTransaction();
//some operations on dbcontext
tran.Rollback();

其中context变量是简单的DbContext实例。

异常"基础提供商在回滚时失败了#34;被扔了。 使用正常的SQL Server连接时,不会抛出此异常。

这是否意味着localdb不支持交易?如果是的话,如何实现呢?

还是来自每个进程运行的连接,所以当查询结束时,连接会自动关闭?

编辑:我执行的示例操作:

var myEntity = new MyEntityA();
this.context.MyEntitiesA.Add(myEnttiy).
this.context.Save(); //save to retreive id

// some playing with id

var mySecondEntity= new MyEntityB(){ MyEntityAId = myEntityA.Id, //other data gethered in "playing part" } ;
this.context.MyEntitiiesB.Add(mySecondEntity).
this.context.Save(); //need to rollback first, when here fails.

所以我想在交易中附上:

using (var tran = this.context.Database.BeginTransaction())
{
    try
    {
        // operations
        tran.Commit();
    }
    catch (Exception ex)
    {    
       // stuff
       tran.Rollback();
    }
}

所以你可以看到交易在这里很有用。

0 个答案:

没有答案