0

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

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

当我打电话时context.Connection.BeginTransactin(),我得到了EntityTransaction回复。实际上,我的变量是 a DbTransaction,它是所有交易的基类。但实际返回的对象是一个EntityTransaction.

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

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

托尼

4

1 回答 1

1

我查看了EntityTransaction该类,实际上StoreTransaction存在一个名为的内部属性。如果在这个 SO 讨论中找到一些源代码:这个 SqlTransaction 已经完成;它不再可用。Entity Framework Code First这可能会帮助你。

请记住,这在部分信任环境中不起作用,它不允许您使用反射访问成员。

于 2012-09-07T21:05:43.007 回答