首页 > 其他分享 >EF Core中的Fluent API方法 (重写OnModelCreating方法中)

EF Core中的Fluent API方法 (重写OnModelCreating方法中)

时间:2022-10-09 11:47:48浏览次数:47  
标签:OnModelCreating Core 实体 配置 EF Fluent API Property 属性

配置 Fluent API方法 用法
模型配置
HasDbFunction() 在定位关系数据库时配置数据库功能
HasDefaultSchema() 指定数据库架构
HasAnnotation() 在实体上添加或更新数据注释属性
HasSequence() 定位关系数据库时配置数据库序列
实体配置
HasAlternateKey() 在EF模型中为实体配置备用密钥
HasIndex() 配置指定属性的索引
HasKey() 将属性或属性列表配置为主键
HasMany() 配置关系的“很多”部分,其中实体包含一对多或多对多关系的其他类型的引用集合属性
HasOne() 配置关系的“一部分”,其中实体包含一对一或一对多关系的其他类型的引用属性
Ignore() 配置不应将类或属性映射到表或列
OwnsOne() 配置关系,其中目标实体由该实体拥有。目标实体键值是从它所属的实体传播的
ToTable() 配置实体映射到的数据库表
属性配置
HasColumnName() 在数据库中为属性配置相应的列名称
HasColumnType() 为属性配置数据库中相应列的数据类型
HasComputedColumnSql() 配置属性以在关系数据库为目标时映射到数据库中的计算列
HasDefaultValue() 为目标关系数据库配置属性映射到的列的默认值
HasDefaultValueSql() 在定位关系数据库时,为属性映射到的列配置默认值表达式
HasField() 指定要与属性一起使用的后备字段
HasMaxLength() 配置可以存储在属性中的最大数据长度
IsConcurrencyToken() 将属性配置为用作乐观并发令牌
IsRequired() 配置属性的有效值是必需的还是null为有效值
IsRowVersion() 配置要在乐观并发检测中使用的属性
IsUnicode() 配置字符串属性,该属性可以包含或不包含Unicode字符
ValueGeneratedNever() 配置保存实体时不能具有生成值的属性
ValueGeneratedOnAdd() 配置在保存新实体时属性具有生成的值
ValueGeneratedOnAddOrUpdate() 配置保存新实体或现有实体时属性具有生成的值
ValueGeneratedOnUpdate() 配置在保存现有实体时属性具有生成的值
实例:
重写OnModelCreating方法,并使用ModelBuilder类型的参数modelBuilder来配置领域实体类,如下所示:

public class SchoolDBContext: DbContext
{
public DbSet Students { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//Write Fluent API configurations here
//Property Configurations
modelBuilder.Entity<Student>()
.Property(s => s.StudentId)
.HasColumnName("Id")
.HasDefaultValue(0)
.IsRequired();

 


在上面的示例中,ModelBuilder Fluent API实例用于通过调用链中的多个方法来配置属性。它配置Student实体的StudentId属性;它在单个语句而不是多个语句中使用HasColumnName配置名称,使用HasDefaultValue配置默认值,并使用IsRequired方法配置可空性。与多条语句相比,这提高了可读性,并且花费的时间更少,如下所示:

//Fluent API method chained calls
modelBuilder.Entity()
.Property(s => s.StudentId)
.HasColumnName(“Id”)
.HasDefaultValue(0)
.IsRequired();

//Separate method calls
modelBuilder.Entity().Property(s => s.StudentId).HasColumnName(“Id”);
modelBuilder.Entity().Property(s => s.StudentId).HasDefaultValue(0);
modelBuilder.Entity().Property(s => s.StudentId).IsRequired();
————————————————
版权声明:本文为CSDN博主「徐子骞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42172560/article/details/121512352

标签:OnModelCreating,Core,实体,配置,EF,Fluent,API,Property,属性
From: https://www.cnblogs.com/wl-blog/p/16771561.html

相关文章