我已經使用以下命令將我的資料庫搭建成模型:
dotnet ef dbcontext scaffold "Server=.\;Database=MyApp;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models
每當有資料庫更改時,我都會使用 -force 標志觸發上述命令。
這已自動將代表表的 dbcontext 和類檔案生成到模型檔案夾中。
我的問題:
在 dbcontext.cs 檔案中,除了類建構式和 dbset 之外,還生成了以下方法:
- OnModelCreating
- OnModelCreatingPartial
這些方法的目的是什么,我可以擺脫它們嗎?
例如:在 program.cs 我打算添加:
builder.Services.AddDbContext<MyAppContext>(opt =>
opt.UseSQLServer(".\;Database=MyApp;Trusted_Connection=True;"));
所以我可以洗掉 OnConfigurimg 方法。以上2種方法呢?
我想創建一些模型,例如附加表并確定我想遷移到資料庫中的表。因此,由于這些功能的存在,我對如何進行感到困惑。
uj5u.com熱心網友回復:
無需手動構建與資料庫中的表匹配的模型,腳手架可幫助您將資料庫映射到模型以在專案中作業。這是資料庫優先開發的一部分。
一旦你有了模型,你就可以在你的專案中使用新物體擴展你的背景關系,創建新資料,進行遷移并通過你的專案擴展你的資料庫。這樣,您將打破資料庫優先的方法并開始混合開發。
這兩種方法存在,因此您可以通過將新物體添加到您的背景關系來擴展您的模型。你會發現很多關于使用它們的例子。
除了和/或代替在這些方法中添加新事物之外,您還可以進行其他初始化
至于洗掉,您的背景關系是從DbContext這些定義為的地方繼承的virtual,因此您的背景關系檔案必須至少具有它們的空實作。
官方檔案OnModelCreating提到了這一點:
此方法在派生背景關系的模型已初始化時呼叫,但在模型已鎖定并用于初始化背景關系之前。這個方法的默認實作什么都不做,但是它可以在派生類中被覆寫,這樣模型就可以在它被鎖定之前被進一步配置
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412755.html
標籤:
上一篇:無法創建物體框架代碼優先遷移
下一篇:指紋登錄是怎么跑起來的
