为什么这一整天都在困扰着我。
我有一个带有多个引用的实体,我从一个上下文获取,然后我将Dispose。 做一些更改并尝试SubmitChanges()。虽然没有.Attach()调用SubmitChanges()似乎什么都不做。使用.Attach()时,我得到了例外:
尝试附加或添加非新的实体,可能是从另一个DataContext加载的实体。这不受支持。
有什么想法吗?
答案 0 :(得分:3)
L2S对于更新来自不同数据库上下文的实体非常挑剔。事实上,除非你首先将它从它来自的上下文中分离出来,否则你不能这样做。分离实体有几种不同的方式。其中一个如下所示。此代码将在您的实体类中。
public virtual void Detach()
{
PropertyChanging = null;
PropertyChanged = null;
}
除此之外,您还可以使用基于WCF的序列化序列化您的实体。像这样:
object ICloneable.Clone()
{
var serializer = new DataContractSerializer(GetType());
using (var ms = new System.IO.MemoryStream())
{
serializer.WriteObject(ms, this);
ms.Position = 0;
return serializer.ReadObject(ms);
}
}