1

Azure モバイル サービスを利用するために私が見つけたすべてのサンプル アプリケーションとコードは、簡単にするために MVVM パターンに従っていません。

Azure モバイル サービスを使用してクラウド内のデータにアクセスし、そのデータを Windows Phone のローカル データベース (モデル) にキャッシュする MVVM アプリケーションを作成するにはどうすればよいでしょうか。私の既存のモデルクラスはこのようなものでした -

[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 パターンにどのように適合しますか? モデルクラスはどのように見える必要がありますか。ToDoItem クラスの両方のバージョンを使用して、1 つはローカル データベースからデータを設定/取得するため、もう 1 つはクラウドからデータを設定/取得するために使用し、一方を他方に変換するために何かを使用しますか? 誰かが私に指摘できるサンプルはありますか?

4

1 に答える 1

0

まず、ここでモデルとデータベースを混同しているようです。データベースは単なる保存手段です。一方、モデルはデータの構造を表現したものです。それが邪魔にならないように、あなたの問題に取り掛かりましょう。

同じデータに対して 2 つの異なるモデルを使用しないでください。将来的に矛盾が生じる可能性があり、一般的に悪い設計です。次のように、さまざまなクラスの装飾を完全に設定できます。

[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; }
    }
}

ここでは、両方のタイプの属性と同じ member を使用ColumnしていJsonPropertyますToDoItemId。データベース ストレージ用にデータがシリアル化されると、Column属性が考慮されますが、Azure SDK はそれを都合よく無視してJsonProperty代わりに使用します。

ここでは、Windows Phone のローカル データベースと WAMS の間の同期を処理するライブラリを作成しました。使用しないことを選択した場合でも、コードを参照してヒントを得ることができます。それが役立つことを願っています!

于 2014-03-16T05:00:22.407 に答える