我在EF4中有这个:
SomeClass ObjectX;
using (MyBDcontext ctx = ModelHelper.GetObjectContext())
ObjectX = ctx.GetObjectByKey(Entity.EntityKey);
ObjectX.SomeProperty = StoreValue + 1;
using (MyBDcontext ctx = ModelHelper.GetObjectContext()){
//I get the same object
SomeClass AnotherObjectX = (SomeClass)ctx.GetObjectByKey(ObjectX.EntityKey);
//I do a DeepCopy(copyFrom, copyTo)
ModelHelper.DeepCopy(ObjectX, AnotherObjectX);
var objects = (from entry in ctx.ObjectStateManager.GetObjectStateEntries(
EntityState.Modified)
where entry.EntityKey != null
select entry.Entity);
ctx.Refresh(RefreshMode.StoreWins, objects);
}
我的问题是运行Refresh()后的对象ObjectX具有相同的值,而不是存储值。为什么呢?
var对象中的存在一个ObjectX实例,并使用商店值刷新,但我的意图不会改变。
对不起我的英语,谢谢你的帮助...
编辑:
谢谢Gert的帮助,我会试着解释一下自己://存储值
ObjectX.SomeProperty = 0
//在内存中编辑
ObjectX.SomeProperty = 1
//出于某种原因,我想取消所有更改并返回商店值ctx.Refresh(RefreshMode.StoreWins,objects);
// ObjectX.SomeProperty的值为1,它的值为0(商店值)