力LinqToSql提交(force LinqToSql to submit)

2019-10-16 18:43发布

我怎么能强迫LinqToSql DataContext的考虑财产脏,并将其提交到数据库?

在我的情况的属性是的XElement,它被修改,但DataContext的不抓住它,因为实际参考保持不变。

我想我可以尝试分配财产空或新的XElement,然后分配给它回到原来的XElement。 这会是最好的解决办法?

我打电话的SubmitChanges后的XElement儿童被修改。

Answer 1:

您可能需要使用Attach(object, true) ,你说的是DataContext的要传递的版本是你想要的保存。 然后,你可以调用SubmitChanges()从那里。



Answer 2:

我还没有找到一种方法来逼实体属性变脏。 从在LinqToSql代码挖似乎旧值在一般跟踪和然后相比,新的值,因此无论是附加必须使用或当前对象必须clonned来创建新的参考。

我曾在我的问题的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 );
    }
}


文章来源: force LinqToSql to submit
标签: linq-to-sql