5

Visual Studio2012RCとEntityFramework5で遊び始めました...絶対に気に入っていますが、これを行うためのよりクリーンな方法があるかどうか疑問に思っています。

毎回XMLを解析し、.ToString()で設定する仲介者を排除したいと思います。

public class MyEFEntity
{
    [NotMapped()]
    public XElement Tags { 
        get { return XElement.Parse(tags); } 
        set { tags = value.ToString(); } }

    [Column("Tags", TypeName = "xml"), Required]
    public string tags { get; set; }
}
4

1 に答える 1

5

原則として、これ以上の方法はありません。2つのプロパティが必要です。1XElementつは永続化された文字列をバックアップするためのものです。解析と変換の量を減らしたい場合は、そのためのインフラストラクチャを実装する必要があります。一般的なアプローチは次のとおりです。

  • イベントの処理ObjectContext.ObjectMaterialized-マテリアライズされたオブジェクトがMyEFEntity文字列を解析し、XElementプロパティに保存する場合。を使用している場合DbContextでもObjectContext、明示的に実装されたを通過できますIObjectContextAdapter
  • オーバーライド-メソッドで、 throughSaveChangesの変更または挿入されたすべてのインスタンスを検索し、それらのXMLをstringプロパティに保存しますMyEFEntityDbContext.ChangeTracker.GetEntries
于 2012-06-05T20:51:04.757 に答える