我们正在尝试实施一个快速原型来证明实体框架可以实现某些目标......
我们有一个不支持事务的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();
}
}
我们得到的错误如下:
在提供程序连接上启动事务时发生错误。有关详细信息,请参阅内部异常。
我环顾四周,最近建议是使用压制,但它似乎没有用......有什么想法吗?
答案 0 :(得分:3)
回答你的主要问题(我对Informix一无所知) - 你无法抑制交易。如果SaveChanges
找不到现有的交易,它将始终在提供商处开始新的交易。在事务中运行SaveChanges
是EF的关键功能。
顺便说一下。我检查了IBM Data Provider,我发现只支持EFv1,因此EFv4和EFv4.1的功能不必工作(除非有一些较新版本的提供商)。