由于我的模型經常更改,我正在使用“創建和洗掉” API。
模型更改后,我呼叫dotnet ef database drop,并在下次運行系統呼叫context.Database.EnsureCreated()以重新創建資料庫。我可以在此之前使用,context.Database.EnsureDeleted()但我不想每次都洗掉/重新創建資料庫(它會減慢開發“內回圈”的速度,并且會影響我的驅動器)。
曾經有一種簡單的方法(在舊的 EF 中)以編程方式檢測資料庫和模型是否不同步。EF Core 中沒有這樣的內置功能。有一些方法(例如,eg),但它們已經有幾年的歷史了,不可靠(取決于內部功能)并且適用于較舊的版本。
有沒有一種穩定的方法——不使用內部裝配特征——在v5 中做到這一點?
uj5u.com熱心網友回復:
您可以使用 EF Core 將架構 ( context.Model)序列化為字串.Model.DebugView.LongView。
然后我會從該字串計算一個哈希值,并將該哈希值與存盤在表中的值進行比較。
由于 EF Core 不公開運行原始選擇查詢的方法,特別是當您不能依賴最新的架構時。您要么需要SqlConnection直接使用來查詢表。
或者將您的比較構建為insert/update陳述句,以便您可以根據受影響的行數決定要執行的操作。由于您將立即銷毀資料庫,因此可以忽略該 sql 的副作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/356456.html
上一篇:EF資料到新的引腳位置
