C# 数据操作系列 - 6 EF Core 配置映射关系 (2)

那么,我们就来看看 通过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介绍,我打算在下一篇介绍。因为这部分的内容比较麻烦,而且使用率也相当高。

更多内容烦请关注我的博客《高先生小屋》

file

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxspz.html