Dotmim.Sync icon indicating copy to clipboard operation
Dotmim.Sync copied to clipboard

A brand new database synchronization framework, multi platform, multi databases, developed on top of .Net Standard 2.0. https://dotmimsync.readthedocs.io/

DMS

Build Status Documentation Status

See the Azure Devops CI : https://dev.azure.com/dotmim/Dotmim.Sync

Sources

Release and pre-release are hosted on nuget.org : https://www.nuget.org/packages?q=dotmim.sync

Documentation

Read the full documentation on https://dotmimsync.readthedocs.io/

Dotmim.Sync

DotMim.Sync (DMS) is a straightforward framework for syncing relational databases, developed on top of .Net Standard 2.0, available and ready to use within IOT, Xamarin, .NET, UWP and so on :)

Multi Databases Cross Plaform .Net Standard 2.0

TL;DR

Here is the easiest way to create a first sync, from scratch :

  • Create a .Net Standard 2.0 compatible project, like a .Net Core 2.0 / 3.1 or .Net Fx 4.8 console application.
  • Add the nugets packages Dotmim.Sync.SqlServer (or Dotmim.Sync.MySql if you want to tests MySql) and Dotmim.Sync.Sqlite
  • Choose one database for testing:
    • Either SQL Server test database : AdventureWorks lightweight script for SQL Server
    • Or MySql test database : AdventureWorks lightweight script for MySQL Server
  • Add this code :
// 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 setup = new SyncSetup("ProductCategory", "ProductDescription", "ProductModel", 
                          "Product", "ProductModelProductDescription", "Address", 
                          "Customer", "CustomerAddress", "SalesOrderHeader", "SalesOrderDetail");

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

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

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

And here is the result you should have, after a few seconds:

Synchronization done.
        Total changes  uploaded: 0
        Total changes  downloaded: 2752
        Total changes  applied: 2752
        Total resolved conflicts: 0
        Total duration :0:0:3.776

You're done !

Now try to update a row in your client or server database, then hit enter again. You should see something like that:

Synchronization done.
        Total changes  uploaded: 0
        Total changes  downloaded: 1
        Total changes  applied: 1
        Total resolved conflicts: 0
        Total duration :0:0:0.045

Yes it's blazing fast !

Need Help