首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将2个数据库与.NetCore 2同步的最佳解决方案

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

Stack Overflow用户
提问于 2018-12-24 00:13:18
回答 5查看 3.7K关注 0票数 0

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

我是.Net核心的新手。我对Java应用程序和Spring框架有一些技能。

初试:-)

我的第一个想法是使用SOAP WebServices来实现这一点,因此我在我的解决方案中创建了一个WCF projet,下面的示例是:https://www.youtube.com/watch?v=plRPBT3h3S8

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

  • 项目1:.NET Core2.1中的应用程序(.NET体系结构)
  • 项目2 : Dao项目与.NET Core2.0中的Projet 1链接
  • 项目3 : WCF项目在.NET框架4.6.1中使用ASMX文件公开SOAP服务

问题:

  • 不兼容beetwen .NET Framework4.6.1和.NET Core2.1时,我试图将来自项目1的服务注入项目3的ASMX文件中。
  • 项目1项目3之间存在依赖关系,以避免重复两个项目之间的代码甲虫(例如,dbcontext,服务的设置),但我没有成功地使其工作。

第二次尝试:-)

我的第二个想法是将Service.svc (在WCF 项目3中)与项目1链接到WCF服务参考提供者,如下例所示:https://learn.microsoft.com/en-us/dotnet/core/additional-tools/wcf-web-service-reference-guide

问题:

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

问题

  1. 这些想法之一对同步我的数据库有好处吗?
  2. 我听说过“服务面料”。这会是另一种解决办法吗?
  3. 您知道用.NET核心解决这个问题的其他正确方法吗?

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-01-08 13:02:59

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

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

我开发了一个控制台应用程序,它请求这个API (post request with A HttpClient)来更新我的应用程序的数据库。

计划中的任务(CRON)每天都会调用这个程序来同步数据库。

票数 0
EN

Stack Overflow用户

发布于 2021-11-10 16:01:35

请查看.NET项目(开放源码),该项目允许使用.NET与C#同步数据库。

请访问Dotmin.Sync获取更多信息。

执行同步任务的简单代码:

代码语言:javascript
复制
 // Sql Server provider, the "server" or "hub".
SqlSyncProvider serverProvider = new SqlSyncProvider(
    @"Data Source=.;Initial Catalog=AdventureWorks;Integrated Security=true;");

// Sqlite Client provider acting as the "client"
SqliteSyncProvider clientProvider = new SqliteSyncProvider("advworks.db");

// Tables involved in the sync process:
var tables = new string[] {"ProductCategory", "ProductDescription", "ProductModel", "Product", "ProductModelProductDescription",
                           "Address", "Customer", "CustomerAddress", "SalesOrderHeader", "SalesOrderDetail" };

// Sync agent
SyncAgent agent = new SyncAgent(clientProvider, serverProvider, tables);

do
{
    var result = await agent.SynchronizeAsync();
    Console.WriteLine(result);

} while (Console.ReadKey().Key != ConsoleKey.Escape);

问候

票数 3
EN

Stack Overflow用户

发布于 2018-12-24 00:52:57

嗯,我看不出任何最好的解决办法,这真的取决于。但也有一些选择。

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

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

最后一个可以是简单的存储过程,如果您在同一台服务器上有数据库,您可以创建新用户,它可以读取对DB1的访问并对DB2进行读/写,然后使用insert/from或update/from语句。

这里没有灵丹妙药,所以你需要尝试一下自己,因为有很多因素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53908140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档