Имея в виду DRY, я бы предложил вам создать свой собственный метод расширения, например:
public static class ExtensionMethod
{
public static void InmutableCollumn<TEntity, TProperty>(this ModelBuilder modelBuilder, Expression<Func<TEntity, TProperty>> propertyExpression) where TEntity : class
{
modelBuilder.Entity<TEntity>()
.Property(propertyExpression)
.Metadata.AfterSaveBehavior = PropertySaveBehavior.Ignore;
}
}
Тогда вы бы назвали его:
modelBuilder.InmutableCollumn<UserSetting, Guid>(p => p.Id);
Это сделало бы вашкод проще в обслуживании и немного менее повторяется.
Вы можете даже заставить метод получать список выражений, просто нужно найти способ справиться с типом свойства.Посмотрите на этот черновик:
public static void InmutableCollumn<TEntity>(this ModelBuilder modelBuilder, params Expression<Func<TEntity, object>>[] propertiesExpression) where TEntity : class
{
foreach(var propertyExpression in propertiesExpression)
modelBuilder.Entity<TEntity>()
.Property(propertyExpression)
.Metadata.AfterSaveBehavior = PropertySaveBehavior.Ignore;
}
Так что это будет выглядеть так:
modelBuilder.InmutableCollumn<UserSetting>(p => p.ID, p => p.CreatedOn);