2009-08-30 212 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文件来改变它。