2009-07-02 13 views
1

LinqToSql DataContextでプロパティを汚れているとみなしてデータベースに送信する方法を教えてください。強制的にLinqToSqlを送信する

私の場合、プロパティは変更されたXElementですが、DataContextはそれをキャッチしません。実際の参照は同じままであるためです。

私は、プロパティのnullまたは新しいXElementを割り当てて、それを元のXElementに割り当てようと試みることができたと思います。これが最善の解決策でしょうか?

XElementの子を変更した後にSubmitChangesを呼び出しています。

答えて

0

エンティティのプロパティを強制的に汚くする方法が見つかりませんでした。 LinqToSqlコードを掘り下げると、古い値が追跡されて新しい値と比較されるように見えるので、一般的にAttachを使用するか、現在のオブジェクトを新しい参照を作成するためにクローンする必要があります。

私はXElementで自分のテーブルクラスをカスタマイズして問題を解決しました。 XElementが変更された場合、古い要素に基づいて新しいXElementを作成するだけです:

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

あなたが渡しているバージョンが保存したいものであることをDataContextに伝えたい場合は、Attach(object, true)を使用する必要があります。その後、そこからSubmitChanges()に電話することができます。

+0

しかし、私はエンティティ全体を強制的に提出したくありません。変更されたプロパティのちょうど。 – Sumrak

関連する問題