我有一个实体,我建立了一个实体化的实体和一个修改后的实体。这允许我保存初始数据,以便与修改后的数据进行比较。问题是,什么才是理想的方法?我是否应该使用IEquatable
作为覆盖Object.Equals
或实施ICompare
?我原来的执行是:比较一个实体
var properties = typeof(TEntity).GetProperties();
foreach(var property in properties)
{
var initialEntity = original.GetType().GetProperty(property.Name).GetValue(original, null);
var modifiedEntity = userChange.GetType().GetProperty(property.Name).GetValue(userChange, null);
if(initialEntity.Equals(modifiedEntity) == false && !ignore.Contains(property.Name))
{
// Do Something
}
}
我的理解是,它会返回一个boolean
,也是在这种情况下,虽然它是基于引用相等比较会比较上值相等,我假设。
因为它从来没有区分,它在任何情况下都是平等的。
肯定是不是同一个实例? – George
那些linq实体?如果是,那么ObjectStateManager已经包含您对它所做的所有更改 – Gusman
您可能想要检查我几个月前发布的某个项目:[TrackerDog](http://matiasfidemraizer.com/trackerdog)。它做到了你想要达到的目标! –