Skip to content

CloudyWing/EfCoreBehaviorSample

Repository files navigation

EfCoreBehaviorSample

這個專案是 EF Core 行為樣本 demo,以可重複執行的 NUnit 測試呈現 Entity Framework Core 在導覽屬性同步、SaveChanges() 失敗狀態、資料庫預設值與 DateTime 時區處理上的行為。

對應筆記:

文件

  • SPEC.md:demo 範圍、Solution / 專案檔規格、測試策略與 Demo 界線。
  • LICENSE.md:MIT 授權條款。

技術重點

  • Target Framework:.NET 10
  • ORM:Entity Framework Core
  • Database Provider:SQLite in-memory database
  • 測試:NUnit 4
  • Demo 型態:以測試案例作為主要展示介面

專案結構

EfCoreBehaviorSample/
├── src/EfCoreBehaviorSample/
│   ├── Data/
│   ├── Entities/
│   └── Scenarios/
├── tests/EfCoreBehaviorSample.Tests/
└── EfCoreBehaviorSample.slnx

執行測試

dotnet test .\EfCoreBehaviorSample.slnx

Demo 範圍

  • NavigationFixupTests:驗證未追蹤與已追蹤 Entity 在導覽屬性、外鍵與 Find() 載入主體時的 relationship fixup 行為。
  • SaveChangesFailureTests:使用唯一索引衝突重現 SaveChanges() 失敗,並示範 detach 與 reload 的狀態清理。
  • DefaultValueTests:驗證資料庫預設值、CLR 預設值、未變更更新與 AsNoTracking() 對後續更新的影響。
  • DateTimeKindTests:驗證 DateTime.Kind 讀寫與 value converter 的 UTC 正規化行為。

Provider 限制

本專案使用 SQLite in-memory database,目標是讓測試可在本機直接執行。SQLite 的日期時間儲存型別、預設值 SQL 表示與 SQL Server 不完全相同;測試只宣告此 provider 下可觀察到的 EF Core 行為,不延伸為 SQL Server 精度、鎖定或隔離層級示範。

授權條款

本專案採用 MIT 授權條款

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages