【问题标题】:EF Core Fluent Api chaining configurationEF Core Fluent Api 链接配置
【发布时间】:2018-08-18 01:46:52
【问题描述】:

如何在 EF Core Fluent API 中链接它,而不是为表的每个属性逐行重复:

        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");

【问题讨论】:

    标签: entity-framework ef-fluent-api


    【解决方案1】:

    您始终可以向EntityTypeBuilder 添加扩展方法,但这并不能大大减少冗长:

    
    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")
        );
    

    以及扩展方法:

    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));
        }
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-16
    • 2021-10-16
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多