public virtual void Detects_decimal_keys() { var modelBuilder = CreateConventionalModelBuilder(); modelBuilder.Entity <Animal>() .Property <decimal>("Price").HasPrecision(18, 2); modelBuilder.Entity <Animal>().HasKey("Price"); VerifyWarning( SqlServerResources.LogDecimalTypeKey(new TestLogger <SqlServerLoggingDefinitions>()) .GenerateMessage("Price", nameof(Animal)), modelBuilder.Model); }
/// <summary> /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// </summary> public static void DecimalTypeKeyWarning( [NotNull] this IDiagnosticsLogger <DbLoggerCategory.Model.Validation> diagnostics, [NotNull] IProperty property) { var definition = SqlServerResources.LogDecimalTypeKey(diagnostics); if (diagnostics.ShouldLog(definition)) { definition.Log(diagnostics, property.Name, property.DeclaringEntityType.DisplayName()); } if (diagnostics.NeedsEventData(definition, out var diagnosticSourceEnabled, out var simpleLogEnabled)) { var eventData = new PropertyEventData( definition, DecimalTypeKeyWarning, property); diagnostics.DispatchEventData(definition, eventData, diagnosticSourceEnabled, simpleLogEnabled); } }