2009-07-02 13 views
1

Comment puis-je forcer LinqToSql DataContext à considérer une propriété sale et l'envoyer à la base de données? Dans mon cas, la propriété est XElement, qui est modifiée, mais DataContext ne l'attrape pas, puisque la référence réelle reste la même.force LinqToSql à soumettre

Je suppose que je pourrais essayer d'assigner la propriété null ou new XElement, puis l'assigner à XElement d'origine. Serait-ce la meilleure solution? J'appelle SubmitChanges après la modification des enfants XElement.

Répondre

0

Je n'ai pas trouvé un moyen de forcer la propriété sur l'entité à devenir sale. de creuser dans le code LinqToSql il apparaît que l'ancienne valeur est suivie puis comparée à la nouvelle valeur, donc en général soit Attach doit être utilisé ou l'objet courant doit être cloné pour créer une nouvelle référence. J'ai travaillé sur mon problème avec XElement en personnalisant ma classe de table. quand XElement est changé, je crée simplement un nouveau XElement basé sur l'ancien élément:

partial class Table 
{ 
    partial void OnLoaded() 
    { 
     if(XmlData != null) 
     { 
      XmlData.Changed += this.XmlData_Changed; 
     } 
    } 

    private void XmlData_Changed(object sender, XObjectChangeEventArgs e) 
    { 
     this.ModifiedCardData = new XElement(this.XmlData); 
    } 
} 
0

Vous devrez peut-être utiliser le Attach(object, true) où vous dites au DataContext que la version que vous transmettez correspond à ce que vous voulez enregistrer. Ensuite, vous pouvez appeler SubmitChanges() à partir de là.

+0

Mais je ne veux pas forcer soumettre l'entité entière. juste de la propriété qui est modifiée. – Sumrak