private string BuildParamType(ParameterModel param) { string type = MySqlProviderServices.Instance.GetColumnType(_providerManifest.GetStoreType(param.TypeUsage)); StringBuilder sb = new StringBuilder(); sb.Append(type); if (new string[] { "char", "varchar" }.Contains(type.ToLower())) { if (param.MaxLength.HasValue) { sb.AppendFormat("({0}) ", param.MaxLength.Value); } } if (param.Precision.HasValue && param.Scale.HasValue) { sb.AppendFormat("( {0}, {1} ) ", param.Precision.Value, param.Scale.Value); } return(sb.ToString()); }
private static TypeUsage GetStoreTypeUsage(this EdmMember edmMember, DbProviderManifest providerManifest) { TypeUsage storeType = null; var conceptualType = edmMember.TypeUsage; Debug.Assert(conceptualType != null, "EdmMember's TypeUsage is null"); if (conceptualType != null) { // if the EDM type is an enum, then we need to pass in the underlying type to the GetStoreType API. var enumType = conceptualType.EdmType as EnumType; storeType = (enumType != null) ? providerManifest.GetStoreType(TypeUsage.CreateDefaultTypeUsage(enumType.UnderlyingType)) : providerManifest.GetStoreType(conceptualType); } return storeType; }
private void ConfigureRowsAffectedParameter( StorageModificationFunctionMapping modificationFunctionMapping, DbProviderManifest providerManifest) { DebugCheck.NotNull(modificationFunctionMapping); DebugCheck.NotNull(providerManifest); if (!string.IsNullOrWhiteSpace(_rowsAffectedParameter)) { if (modificationFunctionMapping.RowsAffectedParameter == null) { var rowsAffectedParameter = new FunctionParameter( "_RowsAffected_", providerManifest.GetStoreType( TypeUsage.CreateDefaultTypeUsage( PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Int32))), ParameterMode.Out); modificationFunctionMapping.Function.AddParameter(rowsAffectedParameter); modificationFunctionMapping.RowsAffectedParameter = rowsAffectedParameter; } modificationFunctionMapping.RowsAffectedParameter.Name = _rowsAffectedParameter; _configuredParameters.Add(modificationFunctionMapping.RowsAffectedParameter); } }
/// <summary> /// Determines if this column is a narrower data type than another column. /// Used to determine if altering the supplied column definition to this definition will result in data loss. /// </summary> /// <param name="column"> The column to compare to. </param> /// <param name="providerManifest"> Details of the database provider being used. </param> /// <returns> True if this column is of a narrower data type. </returns> public bool IsNarrowerThan(ColumnModel column, DbProviderManifest providerManifest) { Check.NotNull(column, "column"); Check.NotNull(providerManifest, "providerManifest"); var typeUsage = providerManifest.GetStoreType(TypeUsage); var otherTypeUsage = providerManifest.GetStoreType(column.TypeUsage); return (_typeSize[Type] < _typeSize[column.Type]) || !(IsUnicode ?? true) && (column.IsUnicode ?? true) || !(IsNullable ?? true) && (column.IsNullable ?? true) || IsNarrowerThan(typeUsage, otherTypeUsage); }
/// <summary> /// Determines if this column is a narrower data type than another column. /// Used to determine if altering the supplied column definition to this definition will result in data loss. /// </summary> /// <param name = "column">The column to compare to.</param> /// <param name = "providerManifest">Details of the database provider being used.</param> /// <returns>True if this column is of a narrower data type.</returns> public bool IsNarrowerThan(ColumnModel column, DbProviderManifest providerManifest) { Contract.Requires(column != null); Contract.Requires(providerManifest != null); var typeUsage = providerManifest.GetStoreType(TypeUsage); var otherTypeUsage = providerManifest.GetStoreType(column.TypeUsage); return (_typeSize[Type] < _typeSize[column.Type]) || !(IsUnicode ?? true) && (column.IsUnicode ?? true) || !(IsNullable ?? true) && (column.IsNullable ?? true) || IsNarrowerThan(typeUsage, otherTypeUsage); }