【问题标题】:Azure Mobile App Service metadata columns (deleted ) be set using SyncTables使用 SyncTables 设置 Azure 移动应用服务元数据列(已删除)
【发布时间】:2017-07-14 00:48:11
【问题描述】:

我正在使用 Azure 移动应用服务软删除和增量同步功能。我通过对 Foo 实体执行类似的操作在客户端将已删除标志设置为 false,然后尝试检索它:

1) foo.deleted = false;
2) Client.GetSyncTable<Foo>().Update(foo);
3) Client.GetSyncTable<Foo>().Where(w => w.id == "xxx" && w.deleted == false).ToListAsync(); 
//The above step 3 doesn't seem to return any results.
4) Client.GetSyncTable<Foo>().Where(w => w.id == "xxx").ToListAsync(); //This returns a result; 

据我所知,上述所有步骤都针对脱机表进行。

我只是想知道幕后可能会发生什么。我知道有一个可用的 DeleteAsync 方法,但我只是想了解是什么原因导致第 3 步不返回任何结果,但第 4 步确实返回了结果。

删除的元数据列不能在客户端操作吗?

【问题讨论】:

    标签: azure xamarin.forms azure-mobile-services


    【解决方案1】:

    您可以在 GitHub 上查看代码 - https://github.com/azure/azure-mobile-apps-net-client

    短版,当您执行 ...Where(something) 时,它会创建一个 SQL 查询,但不会执行它。当您实际请求结果时(例如,通过 .ToListAsync()),它会执行查询、转换结果并将其返回给您。这使您可以构建复杂的 LINQ 表达式,然后以最有效的方式将其转换为 SQL 查询。

    【讨论】:

    • 您好,感谢您的回复。缺少的 ToListAsync() 是一个错字。对于那个很抱歉。 (顺便说一句,你的博客很棒!!)我的问题是什么时候做 1) foo.deleted = false; 2) Client.GetSyncTable().UpdateAsync(foo); //下面第3步返回0条记录 3) Client.GetSyncTable().Where(w => w.id == "xxx" && w.deleted == false).ToListAsync(); // 但是第4步返回结果; 4) Client.GetSyncTable().Where(w => w.id == "xxx").ToListAsync();简而言之,设置 foo.deleted = true 然后执行 UpdateAsync(foo) 与执行 DeleteAsync(foo) 一样??
    猜你喜欢
    • 2017-05-10
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 2015-01-09
    • 2016-04-10
    • 1970-01-01
    相关资源
    最近更新 更多