【问题标题】:Entity Framework and WCF Data Services : Calling business logic after persisting entity实体框架和 WCF 数据服务:在持久化实体后调用业务逻辑
【发布时间】:2010-10-14 13:37:19
【问题描述】:

我们有一个 WCF 数据服务使用的实体数据模型,它需要在将实体持久化到数据库后运行一些业务逻辑。在这种情况下,它需要通过 WCF Web 服务调用将持久化实体生成的 id 传递给另一个服务。

问题是我们如何在保存实体后运行一些业务逻辑。此业务逻辑的一部分将是使用生成的 id 调用另一个 Web 服务。

提前致谢。

【问题讨论】:

  • 如果有人想知道,SaveChanges 方法是虚拟的,因此可以被覆盖。保存实体的 id 可以在 base.SaveChanges() 调用和 Web 服务调用或引发事件之后获得。

标签: entity-framework entity-framework-4 wcf-data-services


【解决方案1】:

对不起,也许我没有正确理解这个问题,但你能不能简单地使用拦截器?

Interceptors (WCF Data Services)

【讨论】:

  • 您好乔恩,感谢您的回答。我们已经查看了拦截器,但是在您将实体保存到数据库后,没有拦截器会运行。您可以拦截更改实体的请求(更新、更改等),但在实际更改后不触发某些代码。我们需要这样做,因为我们在保存后只有新的 id。
【解决方案2】:

我可能会考虑在 EF 使用的同一事务中将消息发布到事务队列。这样一来,您就可以保证要么保留数据,要么启动业务流程,或者两者都不保留。

当您在实体上调用应该触发业务流程的操作时,您甚至可以让您的实体将消息发布到队列。在整个事务提交之前,消息不会被发布。

NServiceBus 或 MassTransit 可以提供帮助。

【讨论】:

    猜你喜欢
    • 2013-09-14
    • 2012-03-08
    • 2011-04-15
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多