EF Core Database.EnsureCreated 开始创建 table SQL 并且没有向数据库发送请求
EF Core Database.EnsureCreated get creating table SQL and without sending request to database
我使用 EF Core - Database.EnsureCreated
通过 C# class 创建 table,但现在我只想创建 table 和列 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,但它需要向数据库发送请求。
您可以使用 dotnet EF CLI 运行 迁移脚本:
dotnet ef migrations script -i -o "C:\MYFOLDER\dbscript.sql"
对于这些类型的问题,我通常的做法是在 source code. I found the implementation of .EnsureCreated()
, then noticed that there is a public method to .GenerateCreateScript()
on the same type. Searching the entire code base for calls to that method reveals an extension method on DatabaseFacade
中四处闲逛。所以你需要做的就是;
var sqlSource = db.Database.GenerateCreateScript();
然而,使用 google 搜索该方法不会在官方文档中显示任何结果。创建生产数据库的“正确”方法是创建迁移,然后创建一个 sql 脚本来应用它们。
我使用 EF Core - Database.EnsureCreated
通过 C# class 创建 table,但现在我只想创建 table 和列 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,但它需要向数据库发送请求。
您可以使用 dotnet EF CLI 运行 迁移脚本:
dotnet ef migrations script -i -o "C:\MYFOLDER\dbscript.sql"
对于这些类型的问题,我通常的做法是在 source code. I found the implementation of .EnsureCreated()
, then noticed that there is a public method to .GenerateCreateScript()
on the same type. Searching the entire code base for calls to that method reveals an extension method on DatabaseFacade
中四处闲逛。所以你需要做的就是;
var sqlSource = db.Database.GenerateCreateScript();
然而,使用 google 搜索该方法不会在官方文档中显示任何结果。创建生产数据库的“正确”方法是创建迁移,然后创建一个 sql 脚本来应用它们。