public void Throws_for_non_key_SequenceHiLo() { var modelBuilder = CreateConventionalModelBuilder(); modelBuilder.Entity <Dog>().Property(c => c.Type).ForMySqlUseSequenceHiLo(); VerifyError(MySqlStrings.NonKeyValueGeneration(nameof(Dog.Type), nameof(Dog)), modelBuilder.Model); }
/// <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> protected virtual void ValidateNonKeyValueGeneration([NotNull] IModel model) { foreach (var property in model.GetEntityTypes() .SelectMany(t => t.GetDeclaredProperties()) .Where( p => ((MySqlPropertyAnnotations)p.MySql()).GetMySqlValueGenerationStrategy(fallbackToModel: false) == MySqlValueGenerationStrategy.SequenceHiLo && !p.IsKey() && p.ValueGenerated != ValueGenerated.Never && (!(p.FindAnnotation(MySqlAnnotationNames.ValueGenerationStrategy) is ConventionalAnnotation strategy) || !ConfigurationSource.Convention.Overrides(strategy.GetConfigurationSource())))) { throw new InvalidOperationException( MySqlStrings.NonKeyValueGeneration(property.Name, property.DeclaringEntityType.DisplayName())); } }
public void Detects_non_key_SequenceHiLo(bool obsolete) { var modelBuilder = CreateConventionalModelBuilder(); if (obsolete) { #pragma warning disable 618 modelBuilder.Entity <Dog>().Property(c => c.Type).ForMySqlUseSequenceHiLo(); #pragma warning restore 618 } else { modelBuilder.Entity <Dog>().Property(c => c.Type).UseHiLo(); } VerifyError(MySqlStrings.NonKeyValueGeneration(nameof(Dog.Type), nameof(Dog)), modelBuilder.Model); }