0

我已经简化了我的代码以更好地说明我的观点。我需要有一些业务逻辑来测试属性是否从 a 更改为 b。我面临的问题是我正在操作的实体附加到我的 DBContext。如果我更新我的参考之一上的属性,另一个也会更新:

  ....
  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 使用实体框架。主体将是相同的(这是 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 回答