在Azure中为Xamarin Offline Sync设置MySQL后端

时间:2017-06-01 05:26:44

标签: c# mysql sqlite azure

我通过MySQL设置了Azure Portal数据库,目前托管在ClearDB上。我使用Xamarin Forms创建了一个移动应用程序,该应用程序实现了一个SQLite数据库,该数据库存储了我的应用程序的相关信息。我正在使用Microsoft.WindowsAzure.MobileServices.SQLiteStore库实现脱机同步功能,我使用的功能如下:

  • await table.ToListAsync();

  • await table.UpdateAsync(entry);

  • await client.SyncContext.PushAsync();

  • await table.PullAsync("allEntry", table.CreateQuery());

我需要做的最后一件事是将我的本地SQLite数据库与我创建的AzureMySQL数据库同步。如何在C#(或Node.js ..或任何语言)中实现此功能,以便我的SQLite数据库可以与Azure MySQL数据库同步条目。

谢谢!

1 个答案:

答案 0 :(得分:0)

根据您的要求,我尝试通过Visual Studio创建 Azure移动应用项目,并安装支持EF6的MySQL的MySql.Data.Entity 6.9.9,然后使用我的DBContext创建我的表控制器对于MySQL。

我创建了继承包含表列类型DateTimeOffset的{​​{3}}的数据库模型,但是我遇到了不兼容的错误消息。然后我发现MySQL Connector中有一个已知错误如下:

  

使用 DateTimeOffset 类型的列创建的实体框架DbContext对象返回错误,指示DateTimeOffset值与 DateTime Timestamp 值不兼容。 (缺陷号24732001)

我找到了关于MySQL Connector / NET的EntityData,然后我尝试升级到release note,但遇到了MySql.Data.Entity 7.0.7-m61的另一个问题。

由于您的目标是使用azure移动应用程序为您的Xamarin应用程序使用离线同步,我建议您可以尝试使用sql数据库或azure表存储来存储数据而不是MySQL,这可以构建您的移动应用程序后端一个简单的方法。您可以参考TypeLoadException - MySqlEFConfiguration开始使用它。