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);
        }
Пример #2
0
 /// <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()));
     }
 }
Пример #3
0
        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);
        }