¿Cómo puedo sincronizar la base de datos fuera de línea (SQLite) y la base de datos en línea (MySQL) usando C #?

Si está buscando una solución mágica que lo haga por usted, no sé nada.

Primero explíquese qué quiere hacer si hay un registro que se modificó de manera diferente en las bases de datos locales y remotas. Si existe una restricción en una, pero no en la otra. Si el DB local tiene un solo registro A y el remoto un solo registro B. ¿Elimina A del local e inserta B, o elimina B del remoto e inserta A?

Si solo está utilizando db local como caché para el remoto, la respuesta a las preguntas anteriores es que desea aplicar todas las acciones que el usuario había realizado localmente en el DB remoto. Es sencillo, pero no simple:

  1. DB * típico no almacena un diario de lo que se hizo cuando. Sin ella no hay forma de aplicar las acciones.
  2. Mientras estaba desconectado, alguien podría haberle hecho algo a la base de datos remota y ahora debe fusionar *.

Esa podría ser la razón por la cual no hay una solución popular para la sincronización de DB. Larga historia corta: probablemente deberías hacer algo específico para tu aplicación.

* Google for EventSourcing, por ejemplo.

* En el caso común, debe organizar su propio VCS.