EF Core Mapping EntityTypeConfiguration

后端 未结 15 1273
花落未央
花落未央 2020-11-30 18:26

In EF6 we usually able to use this way to configure the Entity.

public class AccountMap : EntityTypeConfiguration
{
    public AccountMap()
           


        
15条回答
  •  孤街浪徒
    2020-11-30 19:17

    You can achieve this through some simple additional types:

    internal static class ModelBuilderExtensions
    {
       public static void AddConfiguration(
         this ModelBuilder modelBuilder, 
         DbEntityConfiguration entityConfiguration) where TEntity : class
       {     
           modelBuilder.Entity(entityConfiguration.Configure);
       }
    }
    
    internal abstract class DbEntityConfiguration where TEntity : class
    {     
        public abstract void Configure(EntityTypeBuilder entity);
    }
    

    Usage:

    internal class UserConfiguration : DbEntityConfiguration
    {
        public override void Configure(EntityTypeBuilder entity)
        {
            entity.ToTable("User");
            entity.HasKey(c => c.Id);
            entity.Property(c => c.Username).HasMaxLength(255).IsRequired();
            // etc.
        }
    }
    
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    
        modelBuilder.AddConfiguration(new UserConfiguration());
    }
    

提交回复
热议问题