C# 输出Azure表中的实体数
我有这个问题,我已经疯狂了几个小时了。我有一个存储在Azure中的表,其中包含用户想要完成的任务。每个任务都有一个状态,该状态可以是1、2或3的整数值,分别对应于要执行的任务、正在进行的任务或已完成的任务。我试图创建三个单独的仪表,告诉用户在这三个类别中他们有多少任务,但我尝试的每件事都会抛出一个C# 输出Azure表中的实体数,c#,azure,windows-store-apps,azure-mobile-services,azure-table-storage,C#,Azure,Windows Store Apps,Azure Mobile Services,Azure Table Storage,我有这个问题,我已经疯狂了几个小时了。我有一个存储在Azure中的表,其中包含用户想要完成的任务。每个任务都有一个状态,该状态可以是1、2或3的整数值,分别对应于要执行的任务、正在进行的任务或已完成的任务。我试图创建三个单独的仪表,告诉用户在这三个类别中他们有多少任务,但我尝试的每件事都会抛出一个MobileServiceInvalidOperation错误,我似乎无法找出原因 --编辑-- 我在程序的另一部分遇到了类似的问题,结果是权限问题。一旦我包含了我在另一个页面上使用的用户身份验证代码,
MobileServiceInvalidOperation
错误,我似乎无法找出原因
--编辑--
我在程序的另一部分遇到了类似的问题,结果是权限问题。一旦我包含了我在另一个页面上使用的用户身份验证代码,我在该页面上运行的查询就开始工作了。但是,包含该代码并不能阻止在下面的代码上引发此异常。我现在认为问题与应用程序验证用户之前运行的代码有关。如果是这种情况,我将如何确保此代码在验证代码运行之后运行
--结束编辑--
我将在下面列出我的一些尝试:
private MobileServiceCollection<SbTask, SbTask> taskItems;
private IMobileServiceTable<SbTask> taskTable = App.MobileService.GetTable<SbTask>();
我尝试了一些可能不值得一提的其他事情,我一直在寻找这个问题的解决方案——我真正学到的是,这是一个困难的问题,我(显然)还没有真正找到解决方案
提前感谢所有能够提供帮助的人。因此,问题与身份验证有关。将GetTodo()方法从我的viewmodel类中移到xaml.cs文件中就成功了
private async void GetTodo()
{
// Can't convert IMobileServiceTableQuery<Int> to
// IMobileServiceQuery<AppName.Models.Sbtask>
IMobileServiceTableQuery<SbTask> query = taskTable
.Where(t => t.Status == 1)
.Select(t => t.Status);
}
private async void GetTodo()
{
IMobileServiceTableQuery<int> query = taskTable
.Where(t => t.Status == 1)
.Select(t => t.Status);
// MobileServiceInvalidOperationException
// Additional information: Error: Unauthorized
List<int> statusOne = await query.ToListAsync();
Value = statusOne.Count; // Also tried statusOne.Sum();
}
private async void GetTodo()
{
var query = taskTable
.Where(t => t.Status == 1)
.Select(t => t.Status)
.IncludeTotalCount();
// MobileServiceInvalidOperationException
// Additional information: Error: Unauthorized
var results = await query.ToEnumerableAsync();
long count = ((ItotalCountProvider)results).TotalCount;
int counts = Int32.Parse(count.ToString());
List<int> stats = await query.ToListAsync();
for (int i = 0; i < counts; i++)
{
Value += stats[i];
}
}
private async void GetTodo()
{
var query = taskTable
.Where(t => t.Status == 1)
.Select(t => t.Status)
.IncludeTotalCount();
// MobileServiceInvalidOperationException
// Additional information: Error: Unauthorized
List<int> stats = await query.ToListAsync();
long count = ((ItotalCountProvider)stats).TotalCount;
int counts = Int32.Parse(count.ToString());
for (int i = 0; i < counts; i++)
{
Value += stats[i];
}
}
private async void GetTodo()
{
// MobileServiceInvalidOperationException
// Additional information: Error: Unauthorized
taskItems = await taskTable.ToCollectionAsync();
Value = taskItems.Count(t => t.Status == 1);
}