2009-08-30 22 views
1

this汎用のCompareObjectsクラスを使用したいと思いますが、SubsonicレコードオブジェクトがIComparableを実装していないようです。Subsonic 2つのオブジェクトを比較する

User userFromDB = User.SingleOrDefault(x => x.UserName == "CmdrTallen"); 
User modifiedUser = new User(); 
TryUpdateModel(modifiedUser); 
if(CompareOjbects<User>(userFromDB, modifiedUser) != 0) 
{ 
    this.log("User was modified") 
    //+ Add modified columns collection to log here 
} 

私はホイールを再発明していますか?おそらく簡単な方法ですか?

答えて

2

最後に、this汎用シリアライザを使用して、DBに格納されているレコード(userFromDB)と変更されたユーザー(modifiedUser)の両方を取得しています。それらをXMLにシリアライズし、次にthisを使用してdiffgramを作成します。正確に私が必要としたもの。

woot!

1

デフォルトでは、ARテンプレートはEquals()をオーバーライドして、基本オブジェクトの比較ではなく主キーを比較します。これを変更するには、ActiveRecord.ttファイルを変更します。

関連する問題