2009-07-02 78 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

您可能需要使用Attach(object, true),告訴DataContext您傳入的版本是您想要保存的版本。然後你可以從那裏撥打SubmitChanges()

+0

但我不想強制提交整個實體。只是被修改的屬性。 – Sumrak 2009-07-02 22:23:50