一、Ef Core 使用Entry方式配置外键
当一个表中有多个外键指向同一个表时候,需要使用Entity方式执行具体外键约束名称,使用方法如下:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<DycUserConcern>(entity =>
{
entity.HasOne(q => q.MemberInfo2)
.WithMany(q=>q.DeConcernList)
.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字段
}
更多:
EF null字段排序后置_Sql中Null字段排在后边
EF Linq To Sql 常用查询整理_常用使用方式整理
EF And 和Or 条件拼接扩展整理
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)