Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure移动应用程序中具有视图或存储过程的脱机数据同步_C#_Stored Procedures_Xamarin.forms_Xamarin.android_Azure Mobile Services - Fatal编程技术网

C# Azure移动应用程序中具有视图或存储过程的脱机数据同步

C# Azure移动应用程序中具有视图或存储过程的脱机数据同步,c#,stored-procedures,xamarin.forms,xamarin.android,azure-mobile-services,C#,Stored Procedures,Xamarin.forms,Xamarin.android,Azure Mobile Services,我们已经创建了一个Xamarin表单应用程序,目前正在Android上运行。后端是.Net Azure移动应用程序服务 我从中了解到,脱机数据同步仅适用于“/tables”端点。(至少我是这么理解的) 但是,我的API公开了来自连接查询(实体关系)的数据,以及一些来自存储过程的数据。这是否意味着这些不能应用于当前SDK? 我有什么选择 我是否在客户端公开表并处理连接的业务逻辑?对于关系和脱机同步,您有两个选项 1) 创建带有触发器的视图。插入、更新或删除条目时,请为后端表做“正确的事情”。视图将

我们已经创建了一个Xamarin表单应用程序,目前正在Android上运行。后端是.Net Azure移动应用程序服务

我从中了解到,脱机数据同步仅适用于“/tables”端点。(至少我是这么理解的)

但是,我的API公开了来自连接查询(实体关系)的数据,以及一些来自存储过程的数据。这是否意味着这些不能应用于当前SDK? 我有什么选择


我是否在客户端公开表并处理连接的业务逻辑?

对于关系和脱机同步,您有两个选项

1) 创建带有触发器的视图。插入、更新或删除条目时,请为后端表做“正确的事情”。视图将自动更新。您的EF模型应该引用视图。这完全可以脱机工作,因为您只处理一个表(因为它实际上是一个视图)。这里存在SQL复杂性,许多关系不能用这种方式表示

2) 使用单个表作为“只读”-post/put/delete到自定义API以执行插入、更新和删除操作,从而保持数据库的引用完整性。这意味着您的数据可以脱机使用,但除非联机,否则无法更新数据库

3) 从数据库中删除关系并在客户端上执行连接等。这就把责任推到了你的客户身上。这还意味着您的后端需要强制执行完整性,因为您不知道是您的客户端访问后端。可能不是最好的主意

4) 对数据进行非规范化并重新构建数据库

我相信有人会想出其他的主意。请查看我关于该主题的博客帖子:


您选择哪一个取决于您想要编写多少代码、您在T-SQL中的感受以及实际数据模型的外观。所有这些都有权衡。

我读过你的文章。它们非常有用。是否有一个示例显示了第一种方法(使用触发器创建视图)。谢谢。