/// <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> protected virtual SequenceBuilder VisitSequence([NotNull] ModelBuilder modelBuilder, [NotNull] DatabaseSequence sequence) { Check.NotNull(modelBuilder, nameof(modelBuilder)); Check.NotNull(sequence, nameof(sequence)); if (string.IsNullOrEmpty(sequence.Name)) { _reporter.WriteWarning(DesignStrings.SequencesRequireName); return(null); } Type sequenceType = null; if (sequence.StoreType != null) { sequenceType = _scaffoldingTypeMapper.FindMapping( sequence.StoreType, keyOrIndex: false, rowVersion: false) ?.ClrType; } if (sequenceType != null && !Sequence.SupportedTypes.Contains(sequenceType)) { _reporter.WriteWarning(DesignStrings.BadSequenceType(sequence.Name, sequence.StoreType)); return(null); } var builder = sequenceType != null ? modelBuilder.HasSequence(sequenceType, sequence.Name, sequence.Schema) : modelBuilder.HasSequence(sequence.Name, sequence.Schema); if (sequence.IncrementBy.HasValue) { builder.IncrementsBy(sequence.IncrementBy.Value); } if (sequence.MaxValue.HasValue) { builder.HasMax(sequence.MaxValue.Value); } if (sequence.MinValue.HasValue) { builder.HasMin(sequence.MinValue.Value); } if (sequence.StartValue.HasValue) { builder.StartsAt(sequence.StartValue.Value); } if (sequence.IsCyclic.HasValue) { builder.IsCyclic(sequence.IsCyclic.Value); } return(builder); }
protected virtual TypeScaffoldingInfo GetTypeScaffoldingInfo([NotNull] DatabaseColumn column) { if (column.StoreType == null) { return(null); } var typeScaffoldingInfo = _scaffoldingTypeMapper.FindMapping( column.GetUnderlyingStoreType() ?? column.StoreType, column.IsKeyOrIndex(), column.IsRowVersion()); if (column.GetUnderlyingStoreType() != null) { return(new TypeScaffoldingInfo( typeScaffoldingInfo.ClrType, inferred: false, scaffoldUnicode: typeScaffoldingInfo.ScaffoldUnicode, scaffoldMaxLength: typeScaffoldingInfo.ScaffoldMaxLength)); } return(typeScaffoldingInfo); }