在单个语句中设置多个列的默认值

时间:2017-10-21 19:44:32

标签: c# ef-code-first entity-framework-core ef-code-first-mapping

我正在使用EF Core Code-First,需要为多列设置默认值。

我知道这是为一列设置默认值的声明

modelBuilder.Entity<Registration>()
                        .Property(b => b.AdminFee)
                        .HasDefaultValue(25);

我有10个具有不同默认值的字段,想要查看是否有一种简短的方法可以在一次拍摄中设置默认值,而不是重复上述代码10次。

1 个答案:

答案 0 :(得分:1)

您可以使用Metadata API来实现它。例如:

var myProps = new Dictionary<string, object>()
{
    { nameof(Registration.AdminFee), 25 },
    { nameof(Registration.AnotherProp1), 35 },
    { nameof(Registration.AnotherProp2), 18 },
    { ... }
};

foreach (var matchingProp in modelBuilder.Entity<Registration>()
            .Metadata
            .GetProperties()
            .Where(x => myProps.ContainsKey(x.Name)))
{
    matchingProp.Relational().DefaultValue = myProps[matchingProp.Name];
}