0

Windows Azure モバイル サービスを使用しています。Elementのテーブルがあります。クラウドデータベースにクエリを実行したい:

  • select Id, Name FROM Element ORDER BY creationTime

しかし、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));

しかし、うまくいきません。

4

3 に答える 3

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 に答える
1

対応する SQL クエリが何であるかを含む、Carlos からの役立つ投稿をここで見つけることができます: 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();
}

に翻訳されます

トップ 10 を選択 [id]、[MovieName]、[MovieRating] FROM MovieRating WHERE Rating > 2 AND UserId = ? ORDER BY MovieName

したがって、翻訳する必要がある場合は

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 に答える
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})

これにより、2つのメンバーが指定された匿名型(具象型の場合もあります)の新しいオブジェクトのリストが作成されます。

于 2013-02-13T16:22:23.080 に答える