那么,我们就来看看 通过builder怎么配置映射关系吧:
public class ModelEntityConfig : IEntityTypeConfiguration<ModelA>// 基于 ModelA新建一个配置类 { public void Configure(EntityTypeBuilder<ModelA> builder) { } } builder.ToTable("TableName");设置表名
builder.HasKey(t => t.Id); //builder.HasKey(t => t.Id).HasName("KeyName");设置主键,如果不写后面的HasName,则主键名称默认是属性名;写了之后EF将使用声明的名称作为主键在数据库的名称。
var property = builder.Property(t => t.Name);获取一个与属性Name相关联的PropertyBuilder实例,通过这个实例可以配置属性与数据库列的关系。
builder.Ignore(t => t.ModelBs);表示这个属性不由数据库维护。
回过头来,我们看看 PropertyBuilder里有哪些方法:
// 设置一个最大长度 public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder HasMaxLength (int maxLength); // 设置一个数据生成规则 public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder HasValueGenerator (Func<Microsoft.EntityFrameworkCore.Metadata.IProperty,Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.ValueGeneration.ValueGenerator> factory); public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder HasValueGenerator (Type valueGeneratorType); public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder HasValueGenerator<TGenerator> () where TGenerator : Microsoft.EntityFrameworkCore.ValueGeneration.ValueGenerator; // 设置在添加时,自动生成一个值 public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder ValueGeneratedOnAdd (); //设置列名 public static Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder HasColumnName (this Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder propertyBuilder, string name); // 设置列的数据库参数类型 public static Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder HasColumnType (this Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder propertyBuilder, string typeName); 3. 总结在这一篇领着大家看了一下EF Core对于映射关系这一部分的内容,我留下了外键相关的FluentAPI介绍,我打算在下一篇介绍。因为这部分的内容比较麻烦,而且使用率也相当高。
更多内容烦请关注我的博客《高先生小屋》