1

JSON文字列を含むモデルがあり、不要な再解析を防ぐために、解析されたJSON.NETオブジェクトをそのままにしておく必要があります。

例えば

public class JsonData {
  public Guid Id { get; set; }
  public string Json { get; set; }
}

そこにJObjectを保持したいのですが、可能であればJson文字列のセットで再解析します。データベースに保存したくありません。しかし、私がこれを書いているとき、それはただ間違っていると感じます...

モデルの上にシリアル化されただけの、同じ「データ」(ビュー?)であるオブジェクトを運ぶための良い方法は何ですか?

4

1 に答える 1

1

[NotMapped]これがあなたの言いたいことかどうかはわかりませんが、コードでのみ使用し、データベースには保存しない POCO のプロパティに注釈を追加できます。

public class MyPoco {

    public Guid Id { get; set; }
    public string MyName { get; set; }

    [NotMapped]
    public string ThisObjectCachedAsJson { get; set; }

}

Json キャッシュのニーズのより完全な例ですが、POCO ランドから逸脱しています。

public class MyPoco {

    private Guid _id;
    private string _myName;
    private string _jsonCache;

    public Guid Id { 
        get { return _id; } 
        set { _jsonCache = null; _id = value; }
    }

    public string MyName { 
        get { return _myName; } 
        set { _jsonCache = null; _myName = value; }
    }

    [NotMapped]
    public string ThisObjectCachedAsJson { 
        get { 
            if(_jsonCache == null) 
                _jsonCache = <generate json>; 
            return _jsonCache; 
        }
    }
}

ゲッターを使用して基本クラスを作成し、そこでメソッドを呼び出して _jsonCache を null に設定できるはずです。これにより、クラスが少しきれいになります。

于 2013-01-26T16:06:48.660 に答える