为什么我的Xamarin Forms应用程序看不到我的数据库表?
我是新来的移动开发,我遇到了我的Xamarin Forms应用程序的问题。我有一个Azure订阅,其中包含一个连接到我的数据库的移动应用程序设置。我已经从Azure中的Mobile App Quickstart链接下载了两个快速启动项目,并将它们重新配置为在我的数据库中查找名为“users”的表并从中返回数据。为什么我的Xamarin Forms应用程序看不到我的数据库表?
当我从使用MacBook Pro作为模拟器的Visual Studio中运行应用程序时,列表将回到空白状态。我放了几个断点,我可以看到它说明找不到资源。
在查找表返回它击中捕捉的方法,像这样的集合:
public async Task<ObservableCollection<users>> GetUserItemsAsync(bool syncItems = false)
{
try
{
#if OFFLINE_SYNC_ENABLED
if (syncItems)
{
await this.SyncAsync();
}
#endif
IEnumerable<users> items = await userTable.ToEnumerableAsync();
return new ObservableCollection<users>(items);
}
//Hits this catch
catch (MobileServiceInvalidOperationException msioe)
{
Debug.WriteLine(@"Invalid sync operation: {0}", msioe.Message, msioe.StackTrace, msioe.Request, msioe.Response);
}
catch (Exception e)
{
Debug.WriteLine(@"Sync error: {0}", e.Message);
}
return null;
}
错误返回如下:
"The resource you are looking for has been removed, had its name changed, or is temporarily unavailable."
我添加了一个响应,并请求渔获物声明,试着确切地看问题是什么。该请求返回以下内容:
{Method: GET, RequestUri: 'https://myurl.azurewebsites.net/tables/users', Version: 1.1, Content: <null>, Headers:
{
X-ZUMO-FEATURES: TT
X-ZUMO-INSTALLATION-ID: r8fv3f71-12e9-416f-a976-8are363cf3b7
Accept: application/json
User-Agent: ZUMO/3.1 (lang=Managed; os=iOS; os_version=10.2; arch=MacOSX; version=3.1.50105.0)
X-ZUMO-VERSION: ZUMO/3.1 (lang=Managed; os=iOS; os_version=10.2; arch=MacOSX; version=3.1.50105.0)
ZUMO-API-VERSION: 2.0.0
}}
我可以看到它认为表或者表不存在或它是空的。我创建了表格并填充了虚拟数据,所以我知道它在那里。
也许我的过程是错误的,但是我从Visual Studio中把表格连接到我的天蓝色订阅。桌子是否需要以某种方式设置?我是否应该使用Azure中的Easy Tables?
我需要一些指导来理解为什么我的应用程序无法看到我的数据库表。
除了具有数据库:你有没有跟任何易表或Azure Mobile Tables自定义Web API项目设置Web API(或Azure的移动应用)?
这是Mobile Client Tables工作所必需的。
快速入门Easy Tables的教程是there。
可以在此处找到创建自定义移动应用程序后端的起点(https:// docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-dotnet-backend如何使用服务器sdk)
我有Azure中的移动应用程序设置@woelliJ但是我没有使用Easy Tables创建我的表,我使用了SQL对象浏览器。可悲的是试图安装Microsoft.Azure.Server.Mobile.Tables甚至Microsoft.Azure.Mobile.Server.2.0.0抛出从Nuget的错误,指出目标框架不适合这些项目。我确实试图改变它,但它说它不能。我一直在围绕试图安装这些项目的圈子。 – Yanayaya
通过创建数据库表不会直接暴露出来。 Microsoft.Azure.Server.Mobile.Tables包用于服务器项目。您需要通过某种Web服务(使用Microsoft.Azure.Server.Mobile.Tables)或通过“易用Tabes”公开您的数据库。 – woelliJ
Ahh对,是的,这就是您从Azure @woelliJ中的示例项目中获得的结果。所以这个元素已经存在。我做了更多的挖掘,并发现这篇文章http://www.strathweb.com/2012/12/using-existing-database-with-azure-mobile-services/它表明你仍然需要使用EasyTables创建表即使它们存在。我设法做到了这一点,我的应用程序不再陷入困境。我的下一个问题是,尽管这个过程我不能返回任何数据,我用Postman来测试其余语句,但它什么都不返回。 – Yanayaya