LinqToSqlモデルのエンティティの1つに、SQL ServerのXML列にマップされたXElement型のフィールドがあります。Linq To Sqlのフィールドをダーティにマーク
私は次のようにします。
myEntity.MyXmlField.Add(new XAttribute("attribute", "value"));
...
DataContext.SubmitChanges();
フィールドがデータベースに更新されません(ただし、他のフィールドが行います)。 私は、DataContextがXElement内で行われた変更を追跡できないため、このフィールドはダーティとマークされておらず、更新もされません。
これは正しい仮定ですか、どのように修正できますか?
EDIT
スクラムマイスターが提供するリンクを読んだ後、それは
myEntity.MyXmlField = new XElement(myEntity.MyXmlField);
が問題を解決するように見えます。
しかし、このソリューションはXElement(クローン作成が容易なため)に非常に特有であり、XElementが大きい場合には多くの処理が必要です。
フィールドが変更されたことをDataContextに知らせる一般的な方法があるはずです。
可能な複製http://stackoverflow.com/questions/689772/linq-to-sql-with-xml-database-fields-why-does- this-work –