2009-08-30 261 views
1

我想使用this通用CompareObjects類,但似乎subsonic記錄對象不實現IComparable。Subsonic比較兩個對象

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()以比較主鍵而不是基於Object比較。你可以通過改變ActiveRecord.tt文件來改變它。