MVVM和Azure移动服务



我遇到的所有示例应用程序和代码都为了简单而遵循MVVM模式。

如何编写使用Azure移动服务访问云中数据的MVVM应用程序,然后在Windows Phone Local Database(模型)中缓存数据。我现有的模型类是这样的 -

[Table]
public class ToDoItem
{
    [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
    public int ToDoItemId
    {
        ...
    }
    [Column]
    public string ItemName
    {
        ...
    }
    [Column]
    public bool IsComplete
    {
        ...
    }
}

现在我想在云中使用这些数据,样品告诉我我需要像这样构建我的课程 -

public class TodoItem
{
    public string Id { get; set; }
    [JsonProperty(PropertyName = "text")]
    public string Text { get; set; }
    [JsonProperty(PropertyName = "complete")]
    public bool Complete { get; set; }
}

这如何适合MVVM模式?我的模型课程需要什么样的。我是否使用两个版本的待办事项类别用于设置/从本地数据库中获取数据,而另一个用于从云中设置/获取数据以及将数据转换为另一个数据?有人可以将我指向我吗?

首先,您似乎在这里令人困惑的模型和数据库。数据库只是存储手段。另一方面,模型是数据结构的表示。毫无疑问,让我们解决您的问题。

您不应该有两个不同的模型来进行相同的数据。它可能会导致将来的不一致,而且总体上是不良设计。您可以完全拥有这样的不同班级装饰:

[Table]
public class ToDoItem
{
    private int _toDoItemId;
    [JsonProperty(PropertyName = "id")]
    [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
    public int ToDoItemId
    {
        get
        {
            return _toDoItemId;
        }
        set { blah; blah; blah; }
    }
}

在这里,我在同一成员ToDoItemId上使用了两种类型的属性,Column以及JsonProperty。当数据序列化以用于数据库存储时,Column属性将考虑在内,而Azure SDK将方便地忽略它并改用JsonProperty

在这里,我写了一个库,该库处理Windows Phone本地数据库和WAM之间的同步。即使您选择不使用它,也可以浏览代码并获得一些提示。希望有帮助!

相关内容

  • 没有找到相关文章

最新更新