1
私はエンティティを作成しました。インスタンス化されたエンティティと変更されたエンティティを取得します。これにより、初期データを保持し、変更されたデータと比較することができます。質問は、理想的なアプローチは何でしょうか? Object.Equals
にオーバーライドとしてIEquatable
を実装するか、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)という数か月前に公開したプロジェクトを確認したい場合があります。それはあなたがすでに達成したいことをします! –