为什么我的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)

+0

我有Azure中的移动应用程序设置@woelliJ但是我没有使用Easy Tables创建我的表,我使用了SQL对象浏览器。可悲的是试图安装Microsoft.Azure.Server.Mobile.Tables甚至Microsoft.Azure.Mobile.Server.2.0.0抛出从Nuget的错误,指出目标框架不适合这些项目。我确实试图改变它,但它说它不能。我一直在围绕试图安装这些项目的圈子。 – Yanayaya

+0

通过创建数据库表不会直接暴露出来。 Microsoft.Azure.Server.Mobile.Tables包用于服务器项目。您需要通过某种Web服务(使用Microsoft.Azure.Server.Mobile.Tables)或通过“易用Tabes”公开您的数据库。 – woelliJ

+0

Ahh对,是的,这就是您从Azure @woelliJ中的示例项目中获得的结果。所以这个元素已经存在。我做了更多的挖掘,并发现这篇文章http://www.strathweb.com/2012/12/using-existing-database-with-azure-mobile-services/它表明你仍然需要使用EasyTables创建表即使它们存在。我设法做到了这一点,我的应用程序不再陷入困境。我的下一个问题是,尽管这个过程我不能返回任何数据,我用Postman来测试其余语句,但它什么都不返回。 – Yanayaya