0

UI から送信されたオブジェクト (注文など) を使用してエンティティ Order を更新しようとしています。

私のメソッドには次のものがあります

Order neworder = new Order
        {
            ID = order.ID,
            FirstName = order.FirstName,
            LastName = order.LastName,
        };
        _bentities.Order.ApplyCurrentValues(neworder);

        _bentities.SaveChanges();

エンティティ Order の null 非許容値をすべて入力すると、これは正常に機能します。ただし、変更されたプロパティはほとんどありません。これらの変更されたプロパティを更新したいだけです(変更されていないすべてのnull不可の値ではありません)

どうすればいいですか?

変更されたプロパティを次のように設定できることを読みました。

var entry = _bentities.ObjectStateManager.GetObjectStateEntry(((IEntityWithKey)neworder).EntityKey);
        entry.SetModifiedProperty("FirstName");
        entry.SetModifiedProperty("LastName");

ただし、これは何らかの理由で機能しません。EntityKey を null にすることはできないという例外が発生します。neworder のエンティティキーを設定するにはどうすればよいですか?

4

1 に答える 1

0

エンティティを更新しようとしている場合は、最初にデータベースからフェッチしてから を呼び出す必要がありますApplkyCurrentValues

order originalOrder = _bentities.Orders.FirstOrDefault(o => o.ID == updatedOrder.ID);
_bentities.Orders.ApplyCurrentValues(updatedOrder);
于 2012-07-13T12:28:45.443 に答える