2012-06-05 21 views
5

Visual Studio 2012 RC ve Entity Framework 5 ile oynamayı ... kesinlikle onu seviyorum ama bunu yapmak için temizleyici temizleyici olup olmadığını merak ediyorum. Prensip olarakEntity Framework 5 ve XElement alanları

Ben .ToString yoluyla XML her zaman ayrıştırma ve ayar orta adam kesmek istiyorum

()

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

cevap

5

iyi bir yol yoktur. İki özelliğe ihtiyacınız var - biri XElement için ve bir tanesi kalıcı dizgeyi destekliyor. Ayrıştırma ve dönüşüm miktarını azaltmak istiyorsanız, bunun için bir takım altyapıyı uygulamanız gerekir. materialized nesne MyEFEntity ayrıştırma dize ise ve XElement özelliğine kaydedin -

  • Kol ObjectContext.ObjectMaterialized olay: Genel yaklaşım olacaktır. DbContext'u kullanıyorsanız, açık bir şekilde uygulanan IObjectContextAdapter aracılığıyla ObjectContext'u alabilirsiniz.
  • geçersiz kıl SaveChanges -
+2

Teşekkür DbContext.ChangeTracker.GetEntries aracılığıyla MyEFEntity tüm değiştirilmiş veya eklenen örneklerini bulup dize özelliğine onların XML kaydetmek yönteminde, bu çalışır. Sadece bunu yapmanın daha zarif bir yolu olduğunu umuyordum. Öznitelikler ve özel bir "DbContext" kullanarak bunu daha temiz bir şekilde yapmanın bir yolunu araştırabilirim. Eğer sadece MS açık kaynaklı EF olurdu. :) – Brendan