我有一些困惑,源于这个http://msdn.microsoft.com/en-us/library/vstudio/bb896248(v=vs.100).aspx关于修改分离的对象。
这似乎表明如果我修改处于分离状态的对象,当我重新附加时,我应该使用 ApplyOriginalValues 而不是 ApplyCurrentValues。但是,当我这样做时,它似乎永远不会像示例中那样更新对象,除非我在重新附加对象后修改它。但是,如果我在附加后进行修改,那么我使用哪一个(applyoriginal 或 applycurrent)似乎并不重要。
这是我的代码:
//this never works
private void UpdateWithOriginal(Category cat, string name)
{
using (TestContext ctx = new TestContext())
{
cat.Name = name;
ctx.Categories.Attach(cat);
ctx.ApplyOriginalValues("Categories", cat);
var state = ctx.ObjectStateManager.GetObjectStateEntry(cat).State; //never modified state here
ctx.SaveChanges();
}
}
//this always works
private void UpdateWithCurrent(Category cat, string name)
{
using (TestContext ctx = new TestContext())
{
ctx.Categories.Attach(cat);
cat.Name = name;
ctx.ApplyCurrentValues("Categories", cat);
var state = ctx.ObjectStateManager.GetObjectStateEntry(cat).State;
ctx.SaveChanges();
}
}
有谁知道为什么 MSDN 链接似乎表明 //this 从不工作,位应该工作?