Note I'm not really updating this anymore, and I took down the product page. Please see my new iteration of this Ensync.
This is a diff/merge app for C# model classes to SQL Server. You can also merge from database to database. Here's my main product page.
Icon looks like this:
The app has a 30-day fully functional free trial. After that, a perpetual license is $50 USD.
You're welcome to clone and examine this repo of course. If you use Model Sync for real, I do ask you to please buy a license. You may not repackage and redistribute ModelSync outside your organization, however.
If you buy a license, the PayPal notification will make me create a key for you, and you'll receive it by email.
- ModelSync works only with .NET Standard 2.0 assemblies that have no dependencies. The only allowed dependency is AO.Models
- Works only with SQL Server
- Requires some finesse in complex cases, meaning you have to run script blocks in a manual order or in multiple passes sometimes
- The WinForms UI is the App project, this repo. Note there is a post build event using my AzDeploy project that won't work on your machine that you will need to remove.
- You will also need to clone the ModelSync library project because the App references the
ModelSync
library as a project within the solution. This allowed me to get the best debug experience.
This project relies on ModelSync being cloned locally with the db-to-db-improvements
branch checked out. So, please clone that first before attempting any development on this repo.
Although I offer ModelSync.Library in NuGet package form, I found that this was not a very good debugging experience in the WinForms app. (Yes I could fix that with SourceLink, but I've had mixed results getting that to work reliably.) I needed the actual ModelSync code directly available. At the same time, I didn't want to duplicate any code, so ModelSync.Library is added to the solution as an external project. Please try to avoid making any changes in ModelSync.Library without checking with me first. Although that project is tracked in git, pending changes are not directly visible in the UI repos, so it's easy to introduce changes that aren't very visible.