我该如何强制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