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