我与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();
}
}
所以你可以看到交易在这里很有用。