推荐 - How to get original values of an entity in Entity Framework? - 我试图在EF中提取实体的原始值。但是ObjectStateManager.GetOBjectStateEntry给出了实体的修改值。我错过了什么?
我在多层环境中使用EF 4.0(POCO实体)。
public bool Update(IMessage objMessage)
{
object ob = objMessage.GetMaster();
appSancAdvice _entity = ob as appSancAdvice;
using (var context = new BISEntities())
{
context.appSancAdvices.Attach(_entity);
ObjectStateEntry objectState = context.ObjectStateManager.GetObjectStateEntry(_entity);
objectState.ChangeState(System.Data.EntityState.Modified);
// this is giving the modified value of _entity
var originalValues = context.ObjectStateManager.GetObjectStateEntry(_entity).OriginalValues["sancstatus_id"];
int _i = context.SaveChanges();
return (_i > 0) ? true : false;
}
}
答案 0 :(得分:0)
由于您附加了实体,因此上下文不知道原始值。如果需要原始值,则必须从数据库中获取对象。当你从新附加的对象中获得OriginalValues
时,并不是EF会自动执行此操作。