Entity Framework Core 2.0表自定义映射

public class ApplicationDbContext : IdentityDbContext
{
    public DbSet OrderItems { get; set; }

    public ApplicationDbContext(DbContextOptions options) : base(options) { }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        
        // 自定义必须包括 base.OnModelCreating(builder)

        builder.ApplyConfiguration(new ApplicationUserConfig());
        builder.ApplyConfiguration(new OrderItemConfig());

        // 添加更多自定义设置
    }
}

public class ApplicationUserConfig : IEntityTypeConfiguration
{
    public void Configure(EntityTypeBuilder builder)
    {
        // 设置该nvarchar类型,最大为15个字符
        builder.Property(u => u.PhoneNumber).HasMaxLength(15);

        // 设置实体AspNetUsers的表名为Users
        builder.ToTable("Users");
    }
}
public class OrderItemConfig : IEntityTypeConfiguration
{
    public void Configure(EntityTypeBuilder builder)
    {
        // 设置该列类型为datetime
        builder.Property(o => o.DateTimeOrdered).HasColumnType("datetime");

        // 设置属性Quantity默认值为1
        builder.Property(o => o.Quantity).HasDefaultValue(1);

        // 设置属性UniqueKey为主键
        builder.HasKey(o => o.UniqueKey);
    }
}

注意在以上例子中,项目可以通过继承 IEntityTypeConfiguration该类型,设置表的映射




你可能感兴趣的:(Entity,Framework)