1 EF Core Fluent API例子
假如我们有一个Country的实体类
public class Country{public int PId { get; set; }public string Name { get; set; }public DateTime AddedOn { get; set; }}
public class CountryContext : DbContext{public CompanyContext(DbContextOptions<CompanyContext> options) : base(options){}public DbSet<Country> Country { get; set; }protected override void OnModelCreating(ModelBuilder modelBuilder){//Write Fluent API configurations here//Entity ConfigurationmodelBuilder.Entity<Country>().HasKey(s => s.PId);//Property ConfigurationsmodelBuilder.Entity<Country>(entity =>{entity.Property(e => e.Name).HasColumnName("CountryName").HasDefaultValue("USA").IsRequired();entity.Property(e => e.AddedOn).HasColumnType("date").HasDefaultValueSql("(getdate())");});modelBuilder.Entity<Country>().Ignore(e => e.population);}}
Line 11: 使用HasKey()函数设置PId属性作为主键
Line 15-18:配置Name属性在数据库表中对应的列是CountryName,并且该列使用了一个USA默认值,IsRequired() 方法确保该列不为空
Line 21, 22 :AddedOn 属性默认设置为日期类型,并且使用了getdate()函数获取默认值
Line 24 : 使用Ignore() 方法指定Population属性不会在数据库表中创建列
注意:你可以在OnModelCreating 方法内将另外一些实体的配置,使用EF Core Migrations命令生成对应的表
2 Fluent API 方法
下面表中我们列举出了EF Core大多数常用的 Fluent API
类型 | Fluent API方法 | 用途 |
模型配置 | HasDbFunction() | 配置数据库序列 |
模型配置 | HasSequence() | 配置数据库序列 |
模型配置 | HasDefaultSchema() | 指定数据库schema |
实体配置 | HasIndex() | 配置属性作为索引 |
实体配置 | ToTable() | 配置实体对应的数据库中表的名称 |
| 实体配置 | HasKey() | 设置属性作为表主键 |
| 实体配置 | HasNoKey() | 表明实体没有主键,此类实体从不会跟踪,此实体也不会在数据库中做增删改查 |
实体配置 | HasOne() | 是一对一或者一对多关系的一部分 |
| 实体配置 | HasMany() | 配置一对多关系 |
实体配置 | WithOne() | 是一对一或者一对多关系的一部分 |
| 实体配置 | WithMany() | 用来配置一对多关系 |
实体配置 | HasForeignKey() | 配置属性作为外键 |
| 实体配置 | Ignore() | 指定属性将不会映射到数据库表中 |
实体配置 | HasConstraintName() | 指定外键约束名称 |
| 属性配置 | HasColumnName() | 指定属性对应数据库列名称 |
| 属性配置 | HasColumnType() | 指定属性对应数据库列类型 |
| 属性配置 | HasDefaultValue() | 针对属性在数据库中指定一个默认值 |
| 属性配置 | HasDefaultValueSql() | 针对属性在数据库中指定一个默认数据库列的表达式,例如 getdate() |
| 属性配置 | HasMaxLength() | 指定属性对应数据库列最大长度 |
| 属性配置 | IsUnicode() | 指定列包含Unicode字符 |
| 属性配置 | ValueGeneratedOnAdd() | 保存一个新的实体配置为该属性生成一个默认值 |
3 Has/With 模式配置关联
使用Fluent API配置表关系时,我们经常会使用Has/With,Has & With 方法一块使用来配置表关系

本文暂时没有评论,来添加一个吧(●'◡'●)