1

次のように定義された単一のC#クラスがあります

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

    [DataMember(Name = "PlayerName")]
    public string PlayerName { get; set; }

    [DataMember(Name = "PlayerCountry")]
    public int PlayerCountry { get; set; }

    [DataMember(Name = "PlayerTime")]
    public double PlayerTime { get; set; }

    [DataMember(Name = "PlayerBadge")]
    public int PlayerBadge { get; set; }
}

そして、このタイプの複数のレコードを含む Azure モバイル サービス SQL データベース内のテーブル。私はいくつかのビューを持っています

select * from tellingthetime.HighScore where PlayerBadge=0

ここで、PlayerBadge は 0 から 4 までの数値です。また、ビューをクエリして適切な行を返す、モバイル サービスにいくつかの読み取りスクリプトを追加しました。

function read(query, user, request) {
    mssql.query("select * from OneStarBadgeLeaderBoard", {
        success: function(results) {
            console.log(results);
            request.respond(statusCodes.OK, results);
        }
    });   
}

上記のスクリプトは OneStarBadgeLeaderBoard と呼ばれますが、私のクラスは HighScore と呼ばれます。以下のコードは、基になるテーブルを取得するために呼び出します。

private IMobileServiceTable<HighScore> HighScoreTable = App.MobileService.GetTable<HighScore>();

別のクラス名を作成しなくても、定義はすべて同じです。SQL が返すデータは同じです。読み取りスクリプトごとに、これを機能させて、適切なビューを照会して値を取得する任意の読み取りスクリプトを呼び出すことができます。私は欲しい?

それが理にかなっていることを願っています。

どうもありがとう、

ジェイソン。

PS もちろん、テーブル全体を読み取って、クライアントで LINQ を使用してクエリを実行することもできますが、ダウンロードするデータの量が増えます。

4

1 に答える 1

1

ジョシュ・ツイストから入手

function read(query, user, request) {

    var dispatch = {
        op1 : operation1,
        op2 : operation2,
    }

    if (request.parameters.operation && dispatch.hasOwnProperty(request.parameters.operation)) {
        dispatch[request.parameters.operation](query, user, request);
        return;
    }
    else 
    {
        // default path for execution
        request.execute();
    }
}

function operation1(query, user, request) {
    request.respond(200, "this result is from operation1");
}

function operation2(query, user, request) {
    request.respond(200, "this result is from operation2");
}

http://www.thejoyofcode.com/Dispatching_to_different_query_functions_in_Mobile_Services.aspx

また、このコードは、必要なレコードのみを取得するフィルター処理された OData 要求を送信します。ToDo リストから入手 Azure Mobile Service チュートリアル

private async void RefreshTodoItems()
{
            // This code refreshes the entries in the list view by querying the TodoItems table.
            // The query excludes completed TodoItems
            var results = await todoTable
                .Where(todoItem => todoItem.Complete == false)
                .ToListAsync();

            items = new ObservableCollection<TodoItem>(results);
            ListItems.ItemsSource = items;
}
于 2013-04-29T21:50:44.543 に答える