0

我使用 Windows Azure 移动服务。我有一张元素表。我想查询云数据库:

  • 选择 Id, Name FROM Element ORDER BY creationTime

但我完全不了解 Windows Azure 移动服务的“查询”系统。我有一个 IMobileServiceTable 但不知道该怎么办...

我查看了教程,他们解释了如何使用 Where 子句,而不是选择。而且我只需要选择一些列,因为我的元素有图片,我不想在我的 getAll 方法中下载它......

编辑 :

我尝试:

Task.Factory.StartNew(() =>
{
    var query = table.Select(x =>
                new Element()
                {
                    Id = x.Id,
                    Name = x.Name,
                    Price = x.Price
                });
    var _items = query.ToListAsync().Result;
}).ContinueWith((x) => handleProductsArrived(x.Result));

但它不起作用。

4

3 回答 3

1

您可以从 Carlos 找到一篇有用的帖子,其中包含相应的 SQL 查询:http: //blogs.msdn.com/b/carlosfigueira/archive/2012/09/21/playing-with-the-query-object -in-read-operations-on-azure-mobile-services.aspx

例如:

function read(query, user, request) {
query.where({ UserId: user.userId })
     .select('id', 'MovieName', 'MovieRating')
     .orderBy('MovieName')
     .take(10);
request.execute();
}

会翻译成

从 MovieRating WHERE Rating > 2 AND UserId = 中选择前 10 个 [id]、[MovieName]、[MovieRating] 按电影名称排序

因此,对于您需要翻译的情况

SELECT Id, Name FROM Element ORDER BY creationTime

您将使用以下内容:

function read(query, user, request) {
    query.where({ UserId: user.userId })
        .select('id', 'Name', 'Element')
        .orderBy('creationTime')
    request.execute();
}
于 2013-02-13T17:12:04.700 回答
1

听起来你只是想用一个简单的查询IMobileServiceTable

SELECT Id, Name FROM Element ORDER BY creationTime

如果您不介意使用IMobileServiceTable<TodoItem>,可以尝试:

1)从对象中删除不需要的成员属性

例子:

public class TodoItem
{
    public int Id { get; set; }

    // REMOVE WHAT YOU DO NOT WANT
    //[DataMember(Name = "text")]
    //public string Text { get; set; }

    [DataMember(Name = "complete")]
    public bool Complete { get; set; }
}

2)这是读取数据的代码:

private void RefreshTodoItems()
{ 
    items = todoTable
            .OrderBy( todoItem => todoItem.Id )
            .Take(10)
            .ToCollectionView();
    ListItems.ItemsSource = items;
}

这基本上是:

SELECT TOP 10 Id, Complete FROM TodoTable ORDER BY Id

todoTable 的代码示例位于http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-wp8/

希望这可以帮助。

于 2013-04-28T08:20:18.377 回答
0

如果您使用的是 .net,那么您几乎可以使用 linq。查看示例应用程序 - 它在哪里 -

    private void RefreshTodoItems()
    {
        // This code refreshes the entries in the list view be querying the TodoItems table.
        // The query excludes completed TodoItems
        items = todoTable
            .Where(todoItem => todoItem.Complete == false)
            .ToCollectionView();
        ListItems.ItemsSource = items;
    }

例如,如果您不想返回您可以在调用之前添加的 Complete 标志.ToCollectionView()

.Select(item=>new {item.Id, item.Text})

这将创建一个具有指定两个成员的匿名类型(可以是具体类型)的新对象的列表。

于 2013-02-13T16:22:23.080 回答