在EFCore 中配置实体类,方法基本与EF是相同的.
两种配置方法
使用特性标注
/// <summary>
/// 用户表
/// </summary>
[Table("T_User")] ///
public class UserEntity:BaseEntity
{
[Required]
public string UserName { get; set; }
[Required]
public string PassWord { get; set; }
}
使用API
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<UserEntity>().ToTable("T_User");
modelBuilder.Entity<UserEntity>().Property(x => x.UserName ).IsRequired();
modelBuilder.Entity<UserEntity>().Property(x => x.PassWord ).IsRequired();
}
有一点要注意,EFCore中的ToTable
是Microsoft.EntityFrameworkCore.Relational
下的扩展方法 。需要导入该库
具体的各种配置建议去官网查,我就算写在这里也没有官网详细 😂链接: Core.
下面就是EFCore与EF的不同之处了。
实体类的配置都写在DbContext
的方法OnModelCreating
会显得太多,改起来也麻烦。
我们可以用单独的配置类来管理配置。这种形式在EF中也是经常用到。
单独配置
EF
class UserConfig : EntityTypeConfiguration<UserEntity>
{
public UserConfig()
{
ToTable("T_User");
Property(x => x.UserName).IsRequired();
Property(x => x.PassWord).IsRequired();
}
}
//然后再OnModelCreating中导入
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserConfig());
}
但是EFCore在这一块有所不同:
EFCore
public class UserConfig : IEntityTypeConfiguration<UserEntity>
{
public void Configure(EntityTypeBuilder<UserEntity> builder)
{
builder.ToTable("T_User");
builder.Property(x => x.UserName).IsRequired();
builder.Property(x => x.PassWord).IsRequired();
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new UserConfig());
}
虽然有区别但是大同小异。