Entity Framework如何将EntityTransaction转换为特定于提供者的事务?

时间:2012-09-07 20:40:02

标签: entity-framework entity-framework-4 entity-framework-4.1

我有一个Entity Framework 4数据模式。我正在使用存储过程将数据加载到数据库中,因为EF非常慢。我们使用实体模型来调用存储过程。一切都必须在一次交易中。

为了加快这个过程,我需要执行一些批量复制操作。我正在使用SQL Anywhere及其ADO.NET提供程序软件。

当我致电context.Connection.BeginTransactin()时,我会收到EntityTransaction。实际上,我的变量是DbTransaction,它是所有事务的基类。但返回的实际对象是EntityTransaction

我无法将EntityTransaction转换为特定于提供者的事务类(在本例中为SAConnection)。如果我这样做,我会得到一个演员异常。然而,不知何故,当实体上下文调用存储过程时,它会将它创建的特定于提供者的命令对象扩展到由EntityTransaction对象表示的事务中。

提供商如何做到这一点?它是一种我可以用来为我的批量复制操作获取特定于提供者的事务对象的机制吗?

1 个答案:

答案 0 :(得分:1)

我查看了EntityTransaction类,实际上存在一个名为StoreTransaction的内部属性。如果在此SO讨论中找到了一些源代码:This SqlTransaction has completed; it is no longer usable. Entity Framework Code First可能会帮助您。

请注意,这不适用于部分信任环境,因为它不允许您使用反射访问成员。