6 EF Core
数据库迁移指令
安装dotnet ef
dotnet tool install --global dotnet-ef
生成迁移代码
dotnet ef migrations add "迁移名称"
更新到数据库中
dotnet ef database update
批量修改/删除
Nuget 包: Zack.EFCore.Batch(.NET 7 之前, .NET 7 之后已支持批量修改/删除)
Fluent API
- 视图与实体类映射(不推荐使用)
builder.ToView("blogsView")
- 表与实体类映射
builder.ToTable("T_Books")
- 排除属性映射
builder.Ignore(b => b.Name2)
- 配置列名
builder.Property(b => b.BlogId).HasColumnName("blog_id")
- 配置列数据类型
builder.Property(b => b.BlogId).HasColumnType("varchar(200)")
- 配置最大长度
builder.Property(b => b.Name).HasMaxLength(20)
- 配置不为空
builder.Property(b => b.BlogId).IsRequired()
- 配置默认值
builder.Property(b => b.Name).HasDefaultValue("Def")
- 配置主键
- 默认把名字为 Id 或者"实体类型+Id"的属性作为主键, 可以用
HasKey()来配置其它属性作为主键 builder.HasKey(b => b.Number)- 支持复合主键, 但不建议使用
- 默认把名字为 Id 或者"实体类型+Id"的属性作为主键, 可以用
- 配置索引
builder.HasIndex(b => b.Url)- 支持复合索引, 如
builder.HasIndex(b => new { b.FirstName, p.LastName } ) - 默认情况下定义的索引不是唯一索引, 使用
IsUnique()把索引设置为唯一索引 - 还可以使用
IsClustered()把索引设置为聚集索引