一个表,几个视图,一个C#类

时间:2013-04-29 08:48:55

标签: c# azure windows-runtime azure-mobile-services

我将一个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返回的数据相同,对于每个读取脚本,我如何使这个工作,所以我可以调用任何读取脚本,查询相应的视图检索我需要的值?

希望有意义。

非常感谢,

杰森。

P.S。当然,我可以读取整个表并在客户端上使用LINQ进行查询,但这会增加要下载的数据量。

1 个答案:

答案 0 :(得分: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;
}