我該如何強制LinqToSql DataContext考慮屬性髒並將其提交給數據庫?強制LinqToSql提交
在我的情況下,屬性是XElement,它被修改,但DataContext沒有捕獲它,因爲實際的引用保持不變。
我想我可以嘗試分配屬性null或新的XElement,然後將其分配回原始的XElement。這是最好的解決方案嗎?
我在修改XElement子元素後調用SubmitChanges。
我該如何強制LinqToSql DataContext考慮屬性髒並將其提交給數據庫?強制LinqToSql提交
在我的情況下,屬性是XElement,它被修改,但DataContext沒有捕獲它,因爲實際的引用保持不變。
我想我可以嘗試分配屬性null或新的XElement,然後將其分配回原始的XElement。這是最好的解決方案嗎?
我在修改XElement子元素後調用SubmitChanges。
我還沒有找到強制實體上的屬性變髒的方法。從挖掘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);
}
}
您可能需要使用Attach(object, true)
,告訴DataContext您傳入的版本是您想要保存的版本。然後你可以從那裏撥打SubmitChanges()
。
但我不想強制提交整個實體。只是被修改的屬性。 – Sumrak 2009-07-02 22:23:50