我正在使用以下代码使用从我的代码中收集的新信息更新实体对象。我正在使用Entity Framework 5。
我使用以下扩展方法(作为我在 EF4 中使用的重新附加代码的替代方法):
public static void ApplyValues(this object currentObject, object sourceObject, System.Data.Entity.DbContext obj)
{
obj.Entry(currentObject).CurrentValues.SetValues(sourceObject);
}
问题是,当调用此方法时,该方法会SetValues
尝试修改EntityKey
附加对象上的值(显然我不希望它这样做),因此会引发错误。
我想这里有两个问题:
有没有办法阻止它尝试更新键值?
如果不是,我如何复制
ObjectContext.ApplyCurrentValues()
曾经在 EF4 中正常工作的代码?
- - 更新 - -
我之前用于 EF4 的代码如下:
public static System.Data.Objects.DataClasses.EntityObject ReAttach(this System.Data.Objects.ObjectContext obj, System.Data.Objects.DataClasses.EntityObject objectDetached)
{
if (objectDetached.EntityKey != null)
{
object original = null;
if (obj.TryGetObjectByKey(objectDetached.EntityKey, out original))
{
objectDetached = obj.ApplyCurrentValues(objectDetached.EntityKey.EntitySetName, objectDetached);
return objectDetached;
}
else
{
throw new ObjectNotFoundException();
}
}
else
{
return objectDetached;
}
}