0

引用 -如何在实体框架中获取实体的原始值?- 我试图在 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;
        }
    }
4

1 回答 1

0

上下文不知道原始值,因为您附加了实体。如果您想要原始值,则必须从数据库中获取对象。OriginalValues当您从新附加的对象中获取时,EF 不会自动执行此操作。

于 2012-12-13T13:30:26.880 回答