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)); }
/// <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; }
// #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; }
/// <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; }
private LiteDBTypeMapping(CoreTypeMappingParameters parameters) : base(parameters) { }
private InMemoryTypeMapping(CoreTypeMappingParameters parameters) : base(parameters) { }
/// <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) { }
private ConcreteTypeMapping(CoreTypeMappingParameters parameters) : base(parameters) { }
private FileContextTypeMapping(CoreTypeMappingParameters parameters) : base(parameters) { }
private HarmonyTypeMapping(CoreTypeMappingParameters parameters) : base(parameters) { }
private InfoCarrierTypeMapping(CoreTypeMappingParameters parameters) : base(parameters) { }
private CosmosTypeMapping(CoreTypeMappingParameters parameters) : base(parameters) { }
private InMemoryHierarchyIdTypeMapping(CoreTypeMappingParameters parameters) : base(parameters) { }