0

参照-EntityFrameworkでエンティティの元の値を取得する方法は?-EFのエンティティの元の値を抽出しようとしました。ただし、ObjectStateManager.GetOBjectStateEntryは、エンティティの変更された値を提供します。私は何が欠けていますか?

多層環境でEF4.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 に答える