/// <summary> /// Sets the default character set to use for the model/database. /// </summary> /// <param name="modelBuilder">The model builder.</param> /// <param name="charSet">The name of the character set to use.</param> /// <param name="delegationModes"> /// Finely controls where to recursively apply the character set and where not (including this model/database). /// Implicitly uses <see cref="DelegationModes.ApplyToAll"/> if set to <see langword="null"/>. /// </param> /// <param name="fromDataAnnotation"> Indicates whether the configuration was specified using a data annotation. </param> /// <returns> /// The same builder instance if the configuration was applied, /// <see langword="null" /> otherwise. /// </returns> public static IConventionModelBuilder HasCharSet( [NotNull] this IConventionModelBuilder modelBuilder, [CanBeNull] string charSet, DelegationModes?delegationModes = null, bool fromDataAnnotation = false) { Check.NotNull(modelBuilder, nameof(modelBuilder)); Check.NullButNotEmpty(charSet, nameof(charSet)); Check.NullOrEnumValue(delegationModes, nameof(delegationModes)); if (modelBuilder.CanSetCharSet(charSet, fromDataAnnotation) && modelBuilder.CanSetCharSetDelegation(delegationModes, fromDataAnnotation)) { modelBuilder.Metadata.SetCharSet(charSet, fromDataAnnotation); modelBuilder.Metadata.SetCharSetDelegation(delegationModes, fromDataAnnotation); return(modelBuilder); } return(null); }