/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public virtual void SetIsNullable(bool nullable, ConfigurationSource configurationSource) { if (nullable) { if (!ClrType.IsNullableType()) { throw new InvalidOperationException(CoreStrings.CannotBeNullable(Name, DeclaringEntityType.DisplayName(), ClrType.ShortDisplayName())); } if (Keys != null) { throw new InvalidOperationException(CoreStrings.CannotBeNullablePK(Name, DeclaringEntityType.DisplayName())); } } UpdateIsNullableConfigurationSource(configurationSource); var isChanging = IsNullable != nullable; SetFlag(nullable, PropertyFlags.IsNullable); if (isChanging) { DeclaringEntityType.Model.ConventionDispatcher.OnPropertyNullableChanged(Builder); } }
/// <summary> /// Creates a an expression tree that can be used to generate code for the literal value. /// Currently, only very basic expressions such as constructor calls and factory methods taking /// simple constants are supported. /// </summary> /// <param name="value"> The value for which a literal is needed. </param> /// <returns> An expression tree that can be used to generate code for the literal value. </returns> public virtual Expression GenerateCodeLiteral([NotNull] object value) => throw new NotSupportedException(CoreStrings.LiteralGenerationNotSupported(ClrType.ShortDisplayName()));