一、Ef Core 使用Entry方式配置外键
当一个表中有多个外键指向同一个表时候,需要使用Entity方式执行具体外键约束名称,使用方法如下:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<DycUserConcern>(entity =>
{
entity.HasOne(q => q.MemberInfo2)
.WithMany()
.HasForeignKey(q => q.MemberID2)
.HasConstraintName("FK__DycUserCo__Membe__690797E6");
});
}
二、Entity方式配置其他约束,整理
/// 实体映射到数据库中,EF会将表名创建为实体名的复数形式,这里就是强制使表名创建为实体名
/// </summary>
/// <param name="modelBuilder"></param>
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<ClassInfo>().ToTable("Class");//设置ClassInfo对应的表名为Class
modelBuilder.Entity<ClassInfo>().Property(p=>p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);//设置ClassInfo的Id为自增长
modelBuilder.Entity<ClassInfo>().HasKey(p=>p.Id);//设置ClassInfo的Id属性为主键
modelBuilder.Entity<ClassInfo>().Property(p=>p.Name).IsRequired();//设置ClassInfo的Name属性为非空
modelBuilder.Entity<ClassInfo>().Property(p=>p.Name).HasMaxLength(32);//设置ClassInfo的Name属性值最大长度为32
modelBuilder.Entity<ClassInfo>().Property(p=>p.CreateTime).IsRequired();//设置ClassInfo的CreateTime属性为非空
modelBuilder.Entity<ClassInfo>().Property(p => p.CreateTime).HasColumnName("CTime");//设置ClassInfo的CreateTime属性名为CTime
modelBuilder.Entity<ClassInfo>().Property(p => p.Remark).HasColumnType("ntext");//设置ClassInfo的Remark属性类型为ntext
modelBuilder.Entity<ClassInfo>().Property(p => p.Remark).HasMaxLength(20);//设置ClassInfo的Remark属性值最大长度为32
modelBuilder.Entity<ClassInfo>().Ignore(p => p.NotNeed);//忽略NotNeed字段
}
更多:
|