public ReflectionSynonym(IRelationalDatabase database, IDatabaseDialect dialect, Type synonymType) { if (database == null) { throw new ArgumentException(nameof(database)); } if (dialect == null) { throw new ArgumentNullException(nameof(dialect)); } if (synonymType == null) { throw new ArgumentNullException(nameof(synonymType)); } Name = dialect.GetQualifiedNameOrDefault(database, synonymType); var targetType = GetBaseGenericTypeArg(synonymType); Target = dialect.GetQualifiedNameOrDefault(database, targetType); }
public ReflectionSequence(IRelationalDatabase database, IDatabaseDialect dialect, Type sequenceType) { if (database == null) { throw new ArgumentNullException(nameof(database)); } if (dialect == null) { throw new ArgumentNullException(nameof(dialect)); } if (sequenceType == null) { throw new ArgumentNullException(nameof(sequenceType)); } var typeInfo = sequenceType.GetTypeInfo(); if (!typeInfo.ImplementedInterfaces.Contains(ISequenceType)) { throw new ArgumentException($"The sequence type { typeInfo.FullName } must implement the { ISequenceType.FullName } interface.", nameof(sequenceType)); } var ctor = sequenceType.GetDefaultConstructor(); if (ctor == null) { throw new ArgumentException($"The sequence type { typeInfo.FullName } does not contain a default constructor.", nameof(sequenceType)); } var instance = ctor.Invoke(Array.Empty <object>()) as ISequence; var sequenceName = dialect.GetQualifiedNameOrDefault(database, sequenceType); var minValue = instance !.MinValue.ToOption(); var maxValue = instance !.MaxValue.ToOption(); // create an inner sequence, which will perform validation var sequence = new DatabaseSequence( sequenceName, instance !.Start, instance !.Increment, minValue, maxValue, instance !.Cycle, instance !.Cache ); Cache = sequence.Cache; Cycle = sequence.Cycle; Increment = sequence.Increment; MaxValue = maxValue; MinValue = minValue; Name = sequenceName; Start = sequence.Start; }
public ReflectionView(IRelationalDatabase database, IDatabaseDialect dialect, Type viewType) { if (database == null) { throw new ArgumentNullException(nameof(database)); } if (dialect == null) { throw new ArgumentNullException(nameof(dialect)); } ViewType = viewType ?? throw new ArgumentNullException(nameof(viewType)); Name = dialect.GetQualifiedNameOrDefault(database, ViewType); }
public ReflectionRoutine(IRelationalDatabase database, IDatabaseDialect dialect, Type routineType) { if (database == null) { throw new ArgumentNullException(nameof(database)); } if (dialect == null) { throw new ArgumentNullException(nameof(dialect)); } RoutineType = routineType ?? throw new ArgumentNullException(nameof(routineType)); Name = dialect.GetQualifiedNameOrDefault(database, RoutineType); }