如何使用 ChangeTracking 追蹤物件變化再透過 EF Core 存到資料庫

上一篇提到了 ChangeTracking + EFCore.BulkExtensions.BatchUpdate,可以很輕易的幫我們產生出有異動的 Update SQL 語法,如何使用 ChangeTracking 追蹤物件變化再透過 EFCore.BulkExtensions 存到資料庫 

很可惜的是 EFCore.BulkExtensions.BatchUpdate 沒有支援異動多張資料表,對於資料庫命令的往返會隨著異動的資料表而增加,這次我想要改使用 EF Core 原生的異動追蹤。

追蹤異動變化使用 ChangeTracking ,消化異動並存放到操作資料庫則使用 EF / EF Core,當然,這不受限,你可以挑選妳喜歡的控制方式,接著,來看看怎麼實現它吧。

...繼續閱讀 »

如何使用 ChangeTracking 追蹤物件變化再透過 EFCore.BulkExtensions 存到資料庫

當我們需要異動資料庫某一筆資料的某些欄位,可以通過追蹤機制來記錄那些欄位被改變了,除了自己開發之外,還可以考慮 ChangeTracking,它是一套可以輕易的幫我們追蹤物件、集合的利器,不過,有一點可惜的是他最後一次更新是在 2019

接下來,我想要利用這個追蹤機制幫我完成資料表的部分更新,有異動的欄位才更新。

追蹤異動變化使用 ChangeTracking ,消化異動並存放到操作資料庫則使用 EF / EF Core,當然,這不受限,你可以挑選妳喜歡的控制方式,接著,來看看怎麼實現它吧。

...繼續閱讀 »

[EF Core][SQLite]如何使用 EF Core DbContext 以 Microsoft.EntityFrameworkCore.Sqlite 為例

.NET Core 1.0 開始為了跨平台重新改寫了 SQLite,名為 Microsoft.Data.Sqlite,刪除了過時的 DataTable 和 DataAdapter 相關的 DataSet  API,這已經和之前的 System.Data.SQLite 不一樣,但團隊還是盡量讓它們兩者的 API 變化降到最低。這裡有官方的比較說明文件 與System.Data.SQLite的比較-Microsoft.Data.Sqlite | 微軟文檔

...繼續閱讀 »

[EF Core 5][UnitTest]在 EF Core 使用 In-Memory 降低建立測試替身的成本

當我們要針對商業邏輯測試時,可能需要隔離 EFCore DbContext,搭配 Mock Framework 可以快速地建立測試替身假的 DbContext,自從 EF Core 的 In-Memory 出現之後,建立 DbContext 測試替身這件事,就變得輕鬆許多了

測試使用 EF Core 的程式碼 - EF Core | Microsoft Docs

...繼續閱讀 »