我使用 EF Core -Database.EnsureCreated通過 C# 類創建表,但現在我只想創建表和列 SQL,而不向資料庫發送請求。
例如
public class ApplicationDbContext : DbContext
{
public DbSet<Dto> Dtos{ get; set; }
}
public class Dto
{
[Key]
[StringLength(10)]
public string ID{ get; set; }
[StringLength(100)]
[Required]
public string Name{ get; set; }
[Required]
public int Age{ get; set; }
}
db.Database.EnsureDeleted();
預期結果 :
create table Dto
{
ID nvarchar(10) primary key not null,
Name nvarchar(100) not null,
Age int not null
}
我嘗試了什么?
我確實打開了 SSMS 組態檔并從 EF Core 獲取 SQL,但它需要向資料庫發送請求。
uj5u.com熱心網友回復:
對于這類問題,我通常采用的方法是查看源代碼。我找到了 的實作.EnsureCreated(),然后注意到.GenerateCreateScript()在同一型別上有一個公共方法。在整個代碼庫中搜索對該方法的呼叫會顯示 上的擴展方法DatabaseFacade。所以你需要做的就是;
var sqlSource = db.Database.GenerateCreateScript();
但是使用谷歌搜索該方法并沒有在官方檔案中顯示任何結果。創建生產資料庫的“正確”方法是創建遷移,然后創建一個 sql 腳本來應用它們。
uj5u.com熱心網友回復:
您可以使用 dotnet EF CLI 運行遷移腳本:
dotnet ef migrations script -i -o "C:\MYFOLDER\dbscript.sql"
參考:https : //docs.microsoft.com/en-us/ef/core/cli/dotnet
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/336520.html
上一篇:如何在sum()方法中處理“可空值型別可能為空”(對于TimeSpan)?
下一篇:如何遞回填充陣列
