添加信息时,在我的数据库

问题描述:

背景添加信息时,在我的数据库

执行CRUD操作我有一个MVC网站与实体框架代码第一个数据库(主数据库)来排队。我还有一个报告数据库,将数据提供给我的报告页面。此外,我有一个队列,可以添加一条消息,并且一个服务将选取它并在主数据库和报告数据库之间同步数据。

注意数据库不具有相同的模式。

问题

我想将消息添加到我的队列(这样我就可以同步我的数据库之间的数据)后,对数据库的操作已完成,记录已经被插入/更新/删除。

理念

我想覆盖的DbContext的调用SaveChanges()方法,并调用我的方法插入一个消息队列,但我不知道这是一个好主意。有什么想法吗?

或SQL触发器,增加了一个消息队列? (我不太喜欢这个想法,因为我不想将任何业务逻辑转换为SQL)。

+0

你想让你的数据库被复制吗?或者你想在你的数据库中有不同的数据? –

+0

我基本上想从我的主数据库中复制一些数据(不是全部)到我的报告数据库。这两个数据库有不同的架构。 –

+0

为什么你不使用ETL过程并使用类似SSIS的东西? – Macilquham

如果你想这样做内EF你可以看看DbCommandInterceptor http://www.entityframeworktutorial.net/entityframework6/database-command-interception.aspx

我也建议看SSIS,我知道你想要做这一切的代码,但SSIS是数据迁移建的目的。我不是SSIS的专家,但我知道你可以调用Web服务(网络服务任务)https://msdn.microsoft.com/en-us/library/ms140114.aspx并执行.net代码(脚本任务)https://msdn.microsoft.com/en-us/library/ms135944.aspx

同意在sql中有太多业务逻辑可能是一件坏事,但如果另一种方法是构建复杂的移民代码,然后显然你需要权衡利弊。

的最后一件事病一提的是在数据库级别http://tsqlt.org/单元测试,它可以帮助克服一些具有存储在数据库中的业务逻辑的弊端。

HTH