/// <summary> /// <para> /// Sets a value indicating whether or not this property can be modified after the entity is /// saved to the database. /// </para> /// <para> /// If <see cref="PropertySaveBehavior.Throw" />, then an exception /// will be thrown if a new value is assigned to this property after the entity exists in the database. /// </para> /// <para> /// If <see cref="PropertySaveBehavior.Ignore" />, then any modification to the /// property value of an entity that already exists in the database will be ignored. /// </para> /// </summary> /// <param name="property"> The property. </param> /// <param name="afterSaveBehavior"> /// Sets a value indicating whether or not this property can be modified after the entity is /// saved to the database. <c>null</c> to reset to default. /// </param> /// <param name="fromDataAnnotation"> Indicates whether the configuration was specified using a data annotation. </param> public static void SetAfterSaveBehavior( [NotNull] this IConventionProperty property, PropertySaveBehavior?afterSaveBehavior, bool fromDataAnnotation = false) { if (afterSaveBehavior != null) { var errorMessage = property.CheckAfterSaveBehavior(afterSaveBehavior.Value); if (errorMessage != null) { throw new InvalidOperationException(errorMessage); } } property.SetOrRemoveAnnotation(CoreAnnotationNames.AfterSaveBehavior, afterSaveBehavior, fromDataAnnotation); }