Linq to sql 强制LinqToSql提交 < >如何强制LIQOTQQL DATACONTRONT考虑一个脏的属性并提交给数据库?< /P>

Linq to sql 强制LinqToSql提交 < >如何强制LIQOTQQL DATACONTRONT考虑一个脏的属性并提交给数据库?< /P>,linq-to-sql,Linq To Sql,在我的例子中,属性是XElement,它会被修改,但DataContext不会捕获它,因为实际引用保持不变 我想我可以尝试分配属性null或new-XElement,然后将其分配回原始的XElement。这是最好的解决方案吗 修改XElement子项后,我将调用SubmitChanges。您可能需要使用附加(object,true)告诉DataContext您要保存的版本。然后您可以从那里调用SubmitChanges()。我还没有找到强制实体上的属性变脏的方法。从LinqToSql代码中挖掘出

在我的例子中,属性是XElement,它会被修改,但DataContext不会捕获它,因为实际引用保持不变

我想我可以尝试分配属性null或new-XElement,然后将其分配回原始的XElement。这是最好的解决方案吗


修改XElement子项后,我将调用SubmitChanges。

您可能需要使用
附加(object,true)
告诉DataContext您要保存的版本。然后您可以从那里调用
SubmitChanges()

我还没有找到强制实体上的属性变脏的方法。从LinqToSql代码中挖掘出来,似乎旧值被跟踪,然后与新值进行比较,因此通常必须使用Attach,或者当前对象必须被clonned以创建新引用

我通过自定义table类解决了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 );
    }
}

但我不想强迫整个实体屈服。只是修改的属性的一部分。