[英]Detect whether model and database out of sync in EF Core 5
我正在使用“創建和刪除” API,因為我的模型經常更改。
模型更改后,我調用dotnet ef database drop
,並在下次運行時系統調用context.Database.EnsureCreated()
來重新創建數據庫。 我可以先使用context.Database.EnsureDeleted()
但我不想每次都刪除/重新創建數據庫(它會減慢開發“內部循環”的速度,並且會影響我的驅動器)。
曾經有一種簡單的方法(在舊的 EF 中)以編程方式檢測數據庫和模型是否不同步。 EF Core 中沒有這樣的內置功能。 有一些方法(例如, eg ),但它們已經有幾年的歷史了,不可靠(取決於內部功能)並且適用於較舊的版本。
有沒有一種穩定的方法——不使用內部裝配特征——在v5 中做到這一點?
您可以讓 EF Core 使用.Model.DebugView.LongView
將您的架構( context.Model
)序列化為字符串。
然后我會從該字符串計算一個哈希值,並將該哈希值與存儲在表中的值進行比較。
由於 EF Core 不公開運行原始選擇查詢的方法,特別是當您不能依賴最新的架構時。 您需要直接使用SqlConnection
來查詢表。
或者將您的比較構建為insert
/ update
語句,以便您可以根據受影響的行數決定要執行的操作。 由於您將立即銷毀數據庫,因此可以忽略該 sql 的副作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.