sensei
sensei

Reputation: 7562

EF Core Fluent Api chaining configuration

How can I chain this in EF Core Fluent API, instead of repeating line by line for each property of table:

        builder.Entity<FoodWeight>().HasIndex(x => x.NutrientDatabankNumber);
        builder.Entity<FoodWeight>().Property(x => x.NutrientDatabankNumber).HasColumnName("NDB_No");
        builder.Entity<FoodWeight>().Property(x => x.SequenceNumber).HasColumnName("Seq");
        builder.Entity<FoodWeight>().Property(x => x.Amount).HasColumnName("Amount");
        builder.Entity<FoodWeight>().Property(x => x.Description).HasColumnName("Msre_Desc");
        builder.Entity<FoodWeight>().Property(x => x.GramWeight).HasColumnName("Gm_Wgt");
        builder.Entity<FoodWeight>().Property(x => x.GramWeight).HasColumnName("Gm_Wgt");
        builder.Entity<FoodWeight>().Property(x => x.NumberOfDataPoints).HasColumnName("Num_Data_Pts");
        builder.Entity<FoodWeight>().Property(x => x.StandardDeviation).HasColumnName("Std_Dev");

Upvotes: 0

Views: 563

Answers (1)

nullPainter
nullPainter

Reputation: 3046

You can always add an extension method to EntityTypeBuilder, but this doesn't reduce the verbosity greatly:


modelBuilder
    .Entity<FoodWeight>()
    .Configure(
        entity => entity.HasIndex(x => x.NutrientDatabankNumber),
        entity => entity.Property(x => x.NutrientDatabankNumber).HasColumnName("NDB_No"),
        entity => entity.Property(x => x.SequenceNumber).HasColumnName("Seq")
    );

And the extension method:

public static class EntityTypeBuilderExtensions
{
    public static void Configure<T>(this EntityTypeBuilder<T> modelBuilder, params Action<EntityTypeBuilder<T>>[] builders) where T : class
    {
        builders
            .ToList()
            .ForEach(builder => builder(modelBuilder));
    }
}

Upvotes: 1

Related Questions