1

我们有一个使用 Entity Framework 5 构建的系统,用于创建、编辑和删除数据,但我们遇到的问题是有时 EF 太慢或者根本无法使用实体框架(基于用户参与为表构建数据的视图在数据库中的某些组等中),我们必须使用存储过程来更新数据。

但是我们遇到了一个问题,我们必须将更改保存到 EF 以便将数据保存在数据库中,然后调用存储过程,我们不能使用 ITransactionScope,因为它总是提升为分布式事务和/或在事务期间锁定表以进行选择。

我们还尝试引入一个 DomainEvents 模式,它将事件排队并在保存更改后引发它们,因此我们在数据库中拥有我们需要的数据,但最终我们可能会导致第一部分成功而第二部分失败。

是否有任何好的方法来处理这个问题,或者我们是否需要在这种情况下完全摆脱 EF?

4

1 回答 1

1

我有类似的情况。后来我把流程分解成小流程,只用EF,把每个小流程都做短。即使整体时间更长,但系统更易于维护和扩展。我还最小化了连接,只更新实体本身,禁用 EF 的 AutoDetectChangesEnabled 和 ValidateOnSaveEnabled。
有时,如果您以不同的方式看待您的问题,您可能会有更好的解决方案。祝你好运!

于 2013-03-28T17:18:09.093 回答