1 EF Core Fluent API例子
假如我们有一个Country的实体类
Bash
public class Country{ public int PId { get; set; } public string Name { get; set; } public DateTime AddedOn { get; set; }}
Bash
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 Configuration modelBuilder.Entity<Country>().HasKey(s => s.PId); //Property Configurations modelBuilder.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 方法一块使用来配置表关系
本文暂时没有评论,来添加一个吧(●'◡'●)