我使用的是Windows Azure移动服务。 我有一张Element表。 我想查询云数据库:
但我完全不了解Windows Azure Mobile Service的“查询”系统。 我有一个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));
但它不起作用。
答案 0 :(得分: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();
}
woudld翻译为
SELECT TOP 10 [id],[MovieName],[MovieRating] 来自MovieRating 评分> 2 AND UserId =? 按电影名称排序
因此,对于您需要翻译的情况
SELECT Id,Name 来自元素 ORDER BY creationTime
你会选择以下内容:
function read(query, user, request) {
query.where({ UserId: user.userId })
.select('id', 'Name', 'Element')
.orderBy('creationTime')
request.execute();
}
答案 1 :(得分: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/
希望这有帮助。
答案 2 :(得分: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;
}
例如,如果您不想返回完整标记,则可以在调用.ToCollectionView()
之前添加
.Select(item=>new {item.Id, item.Text})
这将创建一个匿名类型的新对象列表(可以是具体类型),并指定两个成员。