Skip to content

给实体映射项目EntityConfiguration添加分部类partial支持 #140

@gmf520

Description

@gmf520

您的功能请求与现有问题有关吗?请描述

A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

给实体映射项目EntityConfiguration添加分部类partial支持,以便自定义不同数据库的数据列的不同配置需求

例如:User的配置如下
UserConfiguration.cs

public partial class UserConfiguration : EntityTypeConfigurationBase<User, int>
{
    /// <summary>
    /// 重写以实现实体类型各个属性的数据库配置
    /// </summary>
    /// <param name="builder">实体类型创建器</param>
    public override void Configure(EntityTypeBuilder<User> builder)
    {
        builder.HasIndex(m => new { m.NormalizedUserName, m.DeletedTime }).HasName("UserNameIndex").IsUnique();
        builder.HasIndex(m => new { m.NormalizeEmail, m.DeletedTime }).HasName("EmailIndex");

        builder.Property(m => m.ConcurrencyStamp).IsConcurrencyToken();

        EntityConfigurationAppend(builder);
    }

    /// <summary>
    /// 额外的数据映射
    /// </summary>
    partial void EntityConfigurationAppend(EntityTypeBuilder<User> builder);
}

在mysql 8.x 中,需要对User的字符串类型进行长度限制,可添加如下类型进行配置:
UserConfiguration.mysql.cs

public partial class UserConfiguration
{
    partial void EntityConfigurationAppend(EntityTypeBuilder<User> builder)
    {
        builder.Property(m => m.UserName).HasMaxLength(200);
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions