实体框架和ADO.NET与工作单元模式

时间:2013-03-28 16:52:24

标签: c# entity-framework transactions domain-events

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

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

我们还试图引入一个DomainEvents模式,它将在保存更改后对事件进行排队并引发它们,这样我们就可以在数据库中获得所需的数据,但最终可能会导致第一部分成功,第二部分失败。

有没有什么好方法可以解决这个问题,还是我们需要在这种情况下彻底摆脱EF?

1 个答案:

答案 0 :(得分:1)

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