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

从 Josh Twist 那里得到这个

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 移动服务教程

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 回答