关闭实体框架中的事务

时间:2012-02-15 17:39:09

标签: c# entity-framework transactions informix transactionscope

我们正在尝试实施一个快速原型来证明实体框架可以实现某些目标......

我们有一个不支持事务的Informix数据库 - 是否可以使用实体框架?

我们有一个工作模型和工作提供者,但似乎我们不能在没有交易的情况下执行CRUD查询 - 我们甚至试图压制它们......

[Test]
public void TestMethod1()
{
    entities ent = new entities();

    var a = ent.brands.Select(x => x);

    using (TransactionScope trans = new TransactionScope(
                                          TransactionScopeOption.Suppress))
    {
         ent.brands.AddObject(new brand() { br_name = "New Test Brand" });
         ent.SaveChanges();
    }
}

我们得到的错误如下:

  

在提供程序连接上启动事务时发生错误。有关详细信息,请参阅内部异常。

我环顾四周,最近建议是使用压制,但它似乎没有用......有什么想法吗?

1 个答案:

答案 0 :(得分:3)

回答你的主要问题(我对Informix一无所知) - 你无法抑制交易。如果SaveChanges找不到现有的交易,它将始终在提供商处开始新的交易。在事务中运行SaveChanges是EF的关键功能。

顺便说一下。我检查了IBM Data Provider,我发现只支持EFv1,因此EFv4和EFv4.1的功能不必工作(除非有一些较新版本的提供商)。