我遇到的所有示例应用程序和代码都为了简单而遵循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之间的同步。即使您选择不使用它,也可以浏览代码并获得一些提示。希望有帮助!