Rafy 框架 - 實體支持只更新部分變更的字段


Rafy

Rafy 快一兩年沒有大的更新了。並不是這個框架沒人維護了。相反,主要是因為自己的項目、以及公司在使用的項目,都已經比較穩定了,也沒有新的功能添加。但是最近因為外面使用了 Rafy 的幾個公司,找到我,提出了一些明確的需求,期望我做一些相應的升級。所以可能最近幾個月,會陸續更新 Rafy 框架。

目前,Rafy 已經支持了 NetStandard 2.0。最近升級后,可能截止到明年,會陸續支持 NET5-6 上的一些功能。

今天這篇博客,主要是記錄了一個客戶提出了多次的需求:實體更新時,只更新改動的字段。

聽上去,這個需求是一個非常簡單的需求,但是我一直沒有升級。原因是認識使用 Rafy 的開發者,都會更多地關注領域模型。而不需要太多關注 Update 語句具體是更新了幾個字段。Rafy 框架會管理好領域框架的狀態變更。事實上,這幾年確實沒有升級,而開發者也用得很好,很少有人關注。但是這次客戶提出意見,由於他們的實體類中的屬性實在太多了,查看日志中的更新語句時,較難定位具體已經修改的屬性。再加之,Rafy 接下來會添加一個只查詢部分實體屬性的功能。所以就一並完成了。

主要設計思路

下面,主要截了一些設計過程的圖就好了。實現不難,有興趣的看源碼就行。主要就是先在腦圖中整理好需求、設計、場景、測試用例,然后 TDD 先編寫相應的單元測試,再實現框架的內部代碼。

需求

設計

實現效果

實現完成后,所有單元測試運行通過。
單元測試通過

查看日志,Sql 的對比效果,升級前的更新語句:

UPDATE [Users] SET [AddedTime] = '2000/1/1 0:00:00',[Age] = 100,[LoginName] = '',[UserName] = 'nameChanged;',[TasksTime] = 0,[TestUserExt_UserCode] = 'DefaultUserCode' WHERE [Id] = 2967;

升級后的更新語句,也只更新變更后的屬性了:

UPDATE [Users] SET [UserName] = 'nameChanged;' WHERE [Id] = 2968;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM