我有一個實體,我建立了一個實體化的實體和一個修改後的實體。這允許我保存初始數據,以便與修改後的數據進行比較。問題是,什麼纔是理想的方法?我是否應該使用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)。它做到了你想要達到的目標! –