我在應用程序啓動時從數據庫反序列化對象,然後在應用程序生命週期中用戶可以更新對象,並在結束時將對象序列化回數據庫作爲xml字符串。除了比較初始和最終字符串之外,是否有任何方法可以找出該對象是否已更新。查找對象的快速方法已更新
我知道可以使用:
String.GetHashCode方法,但指出,「不同的字符串可以返回相同的散列碼」。
MD5哈希,如在How to compute and compare hash values by using Visual C#中所做的那樣。雖然我不知道不同的字符串是否可以返回相同的MD5散列。
我知道我的xml總是小於100KB。
沒有散列碼永遠不會是唯一的,除非它比所有的輸入字符串都長。 – SLaks
如果你要使用散列碼路由,你可以做一些類似於.Net框架的工具來加速相等比較:檢查對象的GetHashCode結果。如果它們相同,請檢查「Equals」。如果他們仍然是平等的,那麼考慮他們不變。這很容易實現,儘管不是最快的。當你完成這個,配置文件,看看你是否真的需要更快的方法。序列化和線路傳輸可能比相等比較慢得多,所以你可能試圖優化一些不是你的瓶頸的東西。 –
如果事實證明您需要更快的方法,您可以查看Sam建議的答案(手動更改跟蹤)。此外,.Net Entity Framework內置了這種類型的更改跟蹤。您可以考慮使用它,而不是您的自定義數據訪問代碼。 –