Beispiel #1
0
            public static SingleValueRecordsRelationalTypeMapping Create(ValueConverter valueConverter)
            {
                var coreTypeMappingParameters = new CoreTypeMappingParameters(valueConverter.ProviderClrType, valueConverter, valueGeneratorFactory: valueConverter.MappingHints?.ValueGeneratorFactory);
                RelationalTypeMappingParameters relationalTypeMappingParameters = default;

                if (valueConverter.ProviderClrType == typeof(String))
                {
                    relationalTypeMappingParameters = new RelationalTypeMappingParameters(coreTypeMappingParameters, "nvarchar(max)", StoreTypePostfix.None, System.Data.DbType.String);
                }

                if (valueConverter.ProviderClrType == typeof(Double))
                {
                    relationalTypeMappingParameters = new RelationalTypeMappingParameters(coreTypeMappingParameters, "float", StoreTypePostfix.None, System.Data.DbType.Double);
                }

                if (valueConverter.ProviderClrType == typeof(Decimal))
                {
                    relationalTypeMappingParameters = new RelationalTypeMappingParameters(coreTypeMappingParameters, "decimal", StoreTypePostfix.PrecisionAndScale, System.Data.DbType.Decimal, precision: 18, scale: 2);
                }

                if (valueConverter.ProviderClrType == typeof(Int32))
                {
                    relationalTypeMappingParameters = new RelationalTypeMappingParameters(coreTypeMappingParameters, "int", StoreTypePostfix.None, System.Data.DbType.Int32);
                }

                if (valueConverter.ProviderClrType == typeof(Int64))
                {
                    relationalTypeMappingParameters = new RelationalTypeMappingParameters(coreTypeMappingParameters, "bigint", StoreTypePostfix.None, System.Data.DbType.Int64);
                }

                return(new SingleValueRecordsRelationalTypeMapping(relationalTypeMappingParameters));
            }
Beispiel #2
0
            /// <summary>
            ///     Creates a new <see cref="RelationalTypeMappingParameters" /> parameter object.
            /// </summary>
            /// <param name="coreParameters"> Parameters for the <see cref="CoreTypeMapping" /> base class. </param>
            /// <param name="storeType"> The name of the database type. </param>
            /// <param name="storeTypePostfix"> Indicates which values should be appended to the store type name. </param>
            /// <param name="dbType"> The <see cref="System.Data.DbType" /> to be used. </param>
            /// <param name="unicode"> A value indicating whether the type should handle Unicode data or not. </param>
            /// <param name="size"> The size of data the property is configured to store, or null if no size is configured. </param>
            /// <param name="fixedLength"> A value indicating whether the type is constrained to fixed-length data. </param>
            /// <param name="precision"> The precision of data the property is configured to store, or null if no size is configured. </param>
            /// <param name="scale"> The scale of data the property is configured to store, or null if no size is configured. </param>
            public RelationalTypeMappingParameters(
                CoreTypeMappingParameters coreParameters,
                [NotNull] string storeType,
                StoreTypePostfix storeTypePostfix = StoreTypePostfix.None,
                DbType?dbType    = null,
                bool unicode     = false,
                int?size         = null,
                bool fixedLength = false,
                int?precision    = null,
                int?scale        = null)
            {
                Check.NotEmpty(storeType, nameof(storeType));

                var converterHints = coreParameters.Converter?.MappingHints;

                CoreParameters   = coreParameters;
                StoreType        = storeType;
                StoreTypePostfix = storeTypePostfix;
                DbType           = dbType;
                Unicode          = unicode;
                Size             = size ?? converterHints?.Size;
                Precision        = precision ?? converterHints?.Precision;
                Scale            = scale ?? converterHints?.Scale;
                FixedLength      = fixedLength;
            }
        /// <summary>
        ///     Initializes a new instance of the <see cref="CoreTypeMapping" /> class.
        /// </summary>
        /// <param name="parameters">The parameters for this mapping.</param>
        protected CoreTypeMapping(CoreTypeMappingParameters parameters)
        {
            Parameters = parameters;

            var converter = parameters.Converter;

            var clrType = converter?.ModelClrType ?? parameters.ClrType;

            ClrType = clrType;

            Check.DebugAssert(
                parameters.Comparer == null ||
                parameters.ClrType == null ||
                converter != null ||
                parameters.Comparer.Type == parameters.ClrType,
                $"Expected {parameters.ClrType}, got {parameters.Comparer?.Type}");
            if (parameters.Comparer?.Type == clrType)
            {
                _comparer = parameters.Comparer;
            }

            Check.DebugAssert(
                parameters.KeyComparer == null ||
                parameters.ClrType == null ||
                converter != null ||
                parameters.KeyComparer.Type == parameters.ClrType,
                $"Expected {parameters.ClrType}, got {parameters.KeyComparer?.Type}");
            if (parameters.KeyComparer?.Type == clrType)
            {
                _keyComparer = parameters.KeyComparer;
            }

            ValueGeneratorFactory = parameters.ValueGeneratorFactory
                                    ?? converter?.MappingHints?.ValueGeneratorFactory;
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="CoreTypeMapping" /> class.
        /// </summary>
        /// <param name="parameters"> The parameters for this mapping. </param>
        protected CoreTypeMapping(CoreTypeMappingParameters parameters)
        {
            Parameters = parameters;

            var converter = parameters.Converter;

            var clrType = converter?.ModelClrType ?? parameters.ClrType;

            ClrType = clrType;

            if (parameters.Comparer?.Type == clrType)
            {
                _comparer = parameters.Comparer;
            }

            if (parameters.KeyComparer?.Type == clrType)
            {
                _keyComparer = parameters.KeyComparer;
            }

            if (parameters.StructuralComparer?.Type == clrType)
            {
                _structuralComparer = parameters.StructuralComparer;
            }

            ValueGeneratorFactory = parameters.ValueGeneratorFactory
                                    ?? converter?.MappingHints?.ValueGeneratorFactory;
        }
Beispiel #5
0
 // #12405
 private RelationalTypeMappingParameters(
     CoreTypeMappingParameters coreParameters,
     [NotNull] string storeType,
     StoreTypePostfix storeTypePostfix = StoreTypePostfix.None,
     DbType?dbType    = null,
     bool unicode     = false,
     int?size         = null,
     bool fixedLength = false,
     int?precision    = null,
     int?scale        = null,
     bool precisionAndScaleOverriden = false)
     : this(coreParameters, storeType, storeTypePostfix, dbType, unicode, size, fixedLength, precision, scale)
 {
     PrecisionAndScaleOverriden = precisionAndScaleOverriden;
 }
Beispiel #6
0
            /// <summary>
            ///     Creates a new <see cref="RelationalTypeMappingParameters" /> parameter object.
            /// </summary>
            /// <param name="storeType"> The name of the database type. </param>
            /// <param name="dbType"> The <see cref="System.Data.DbType" /> to be used. </param>
            /// <param name="unicode"> A value indicating whether the type should handle Unicode data or not. </param>
            /// <param name="size"> The size of data the property is configured to store, or null if no size is configured. </param>
            /// <param name="fixedLength"> A value indicating whether the type is constrained to fixed-length data. </param>
            /// <param name="coreParameters"> Parameters for the <see cref="CharTypeMapping"/> base class. </param>
            public RelationalTypeMappingParameters(
                CoreTypeMappingParameters coreParameters,
                [NotNull] string storeType,
                DbType?dbType    = null,
                bool unicode     = false,
                int?size         = null,
                bool fixedLength = false)
            {
                Check.NotEmpty(storeType, nameof(storeType));

                CoreParameters = coreParameters;
                StoreType      = storeType;
                DbType         = dbType;
                Unicode        = unicode;
                Size           = size;
                FixedLength    = fixedLength;
            }
        /// <summary>
        ///     Initializes a new instance of the <see cref="CoreTypeMapping" /> class.
        /// </summary>
        /// <param name="parameters"> The parameters for this mapping. </param>
        protected CoreTypeMapping(CoreTypeMappingParameters parameters)
        {
            Parameters = parameters;

            var clrType = parameters.Converter?.ModelClrType ?? parameters.ClrType;

            ClrType = clrType;

            if (parameters.Comparer?.Type == clrType)
            {
                _comparer = parameters.Comparer;
            }

            if (parameters.KeyComparer?.Type == clrType)
            {
                _keyComparer = parameters.KeyComparer;
            }
        }
            /// <summary>
            ///     Creates a new <see cref="RelationalTypeMappingParameters" /> parameter object.
            /// </summary>
            /// <param name="coreParameters"> Parameters for the <see cref="CoreTypeMapping"/> base class. </param>
            /// <param name="storeType"> The name of the database type. </param>
            /// <param name="storeTypeModifier"> Indicates which values should be appended to the store type name. </param>
            /// <param name="dbType"> The <see cref="System.Data.DbType" /> to be used. </param>
            /// <param name="unicode"> A value indicating whether the type should handle Unicode data or not. </param>
            /// <param name="size"> The size of data the property is configured to store, or null if no size is configured. </param>
            /// <param name="fixedLength"> A value indicating whether the type is constrained to fixed-length data. </param>
            /// <param name="precision"> The precision of data the property is configured to store, or null if no size is configured. </param>
            /// <param name="scale"> The scale of data the property is configured to store, or null if no size is configured. </param>
            public RelationalTypeMappingParameters(
                CoreTypeMappingParameters coreParameters,
                [NotNull] string storeType,
                StoreTypeModifierKind storeTypeModifier = StoreTypeModifierKind.None,
                DbType?dbType    = null,
                bool unicode     = false,
                int?size         = null,
                bool fixedLength = false,
                int?precision    = null,
                int?scale        = null)
            {
                Check.NotEmpty(storeType, nameof(storeType));

                CoreParameters    = coreParameters;
                StoreType         = storeType;
                StoreTypeModifier = storeTypeModifier;
                DbType            = dbType;
                Unicode           = unicode;
                Size        = size;
                Precision   = precision;
                Scale       = scale;
                FixedLength = fixedLength;
            }
Beispiel #9
0
 private LiteDBTypeMapping(CoreTypeMappingParameters parameters)
     : base(parameters)
 {
 }
 private InMemoryTypeMapping(CoreTypeMappingParameters parameters)
     : base(parameters)
 {
 }
Beispiel #11
0
 /// <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 CosmosTypeMapping(CoreTypeMappingParameters parameters)
     : base(parameters)
 {
 }
Beispiel #12
0
 private ConcreteTypeMapping(CoreTypeMappingParameters parameters)
     : base(parameters)
 {
 }
 private FileContextTypeMapping(CoreTypeMappingParameters parameters)
     : base(parameters)
 {
 }
Beispiel #14
0
 private HarmonyTypeMapping(CoreTypeMappingParameters parameters)
     : base(parameters)
 {
 }
Beispiel #15
0
 private InfoCarrierTypeMapping(CoreTypeMappingParameters parameters)
     : base(parameters)
 {
 }
 private CosmosTypeMapping(CoreTypeMappingParameters parameters)
     : base(parameters)
 {
 }
 private InMemoryHierarchyIdTypeMapping(CoreTypeMappingParameters parameters)
     : base(parameters)
 {
 }