0

私の要点をよりよく説明するために、コードを単純化しました。プロパティが a から b に変更されたかどうかをテストするビジネス ロジックが必要です。私が直面している問題は、操作しているエンティティが DBContext に接続されていることです。参照の 1 つでプロパティを更新すると、他の参照も更新されます。

  ....
  var oldEntity = context.Find(x);
  var updatedEntity = context.Find(x);

  //here updatedEntity.IntProperty is 6

  updatedEntity.IntProperty = 7;

  //here both oldEntity.IntProperty and updatedEntity.IntProperty 
  //are now 7 so my test isn't hit
  if(oldEntity.IntProperty != updatedEntity.IntProperty && 
      updatedEntity.IntProperty == 7)
  {
      ....

このエンティティを DBContext にアタッチしたままにして、必要な比較を行う便利な方法はありますか?

4

1 に答える 1

1

nHydrate に Entity Framework を使用しています。プリンシパルは同じになります (これは VB.NET で申し訳ありません!):

Dim initialEntity = _context.ObjectStateManager.GetObjectStateEntry((TryCast(oldEntity, Objects.DataClasses.IEntityWithKey)).EntityKey)

Dim oldValue As Integer = initialEntity.OriginalValues.GetValue("IntProperty")
Dim newValue As Integer = initialEntity.CurrentValues.GetValue("IntProperty")

お役に立てれば。

アンデス

于 2013-01-10T18:34:04.273 に答える