将2个数据库与.NetCore 2同步的最佳解决方案

时间:2018-12-24 00:13:18

标签: visual-studio asp.net-core

我想每天将来自一个数据库 DB1 的多个表中的数据同步到我的.NetCore应用程序的数据库 DB2

我是.Net Core的新手。我对Java EE应用程序和Spring框架有一些技巧。

第一次尝试:-)

我的第一个想法是使用SOAP WebServices进行此操作,因此我按照以下示例在我的解决方案中创建了WCF项目:https://www.youtube.com/watch?v=plRPBT3h3S8

解决方案的内容(在Visual Studio中):

  • 项目1: .NET Core 2.1( MVC架构)中的Web应用
  • 项目2 :Dao项目与.NET Core 2.0中的 Projet 1 链接
  • 项目3: WCF项目,用于在.NET Framework 4.6.1中使用ASMX文件公开SOAP Web服务。

问题:

  • 当我尝试从项目3 的ASMX文件中的项目1 注入服务时,.NET Framework 4.6.1和.NET Core 2.1不兼容。 / li>
  • 项目1 项目3 之间有一个依赖项,以避免在两个项目(例如dbcontext的设置,服务)之间重复代码,但我没有成功使它起作用。

第二次尝试:-)

我的第二个想法是使用WCF Web服务参考将 Service.svc (在WCF 项目3 中)链接到项目1 。提供者遵循以下示例:https://docs.microsoft.com/en-us/dotnet/core/additional-tools/wcf-web-service-reference-guide

问题:

  • 当我单击“发现”按钮时找不到我的 Service.svc ,因此我无法将其与我的项目1
  • 连接

问题

  1. 这些想法之一对同步我的数据库好吗?
  2. 我听说过“服务结构”。可以解决它吗?
  3. 您知道使用.NET Core解决该问题的其他正确方法吗?

谢谢。

4 个答案:

答案 0 :(得分:1)

我看不出它真正依赖的最佳解决方案。但是有一些选择。

您无需在.net核心中加载任何旧的.net框架代码即可进行数据库同步, 需要从.net核心连接到数据库以加载数据。是的,您可以进行代码重复,但是至少您的解决方案将位于.net核心中,您可以在其中控制整个过程。此外,如果要使用EF,请小心如何加载数据和操作内存。

我要使用的第二个选项是SSDT project。您将编写希望从任何源加载的数据转换过程,我假设它甚至支持文本文件。它还可以连接到不同的数据库提供程序,因此您可以从MySql进行加载并写入SqlServer(在我的项目之一中,我将Postgres完成了mssql)。此解决方案的好处是您可以轻松地进行不同的流错误处理。

最后一个可能是简单的存储过程,如果您在同一服务器上有数据库,则可以创建新用户,该用户将具有对DB1的读访问权限和对DB2的读/写权限,然后使用insert / from或update / from语句。

这里没有灵丹妙药,因此有很多因素,您需要尝试一下自己。

答案 1 :(得分:1)

我认为数据库的设计将对这项工作的难度产生更大的影响。如果很容易识别DB2中没有的Db1中的行,反之亦然,则该代码很简单。我不会打扰多层应用程序-使事情尽可能简单。只需编写一个控制台应用程序。稍后,您可以使用Windows Server上的任务管理器或Linux上的cron计划它。

答案 2 :(得分:0)

在本教程之后,我终于使用API​​ REST解决了这种情况:

https://docs.microsoft.com/fr-fr/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.2&tabs=visual-studio

并且我已经开发了一个控制台应用程序,该应用程序请求此API(通过HttpClient发送请求)以更新我的应用程序的数据库。

计划任务(CRON)将调用此程序,以每天同步数据库。

答案 3 :(得分:0)

我使用这个库来同步多个数据库。

https://www.nuget.org/packages/SyncData_dotNET/

AppEventsLogger.activateApp(getApplication());