Skip to content

Commit

Permalink
Merge pull request migratordotnet#4 from Schlupp77/master
Browse files Browse the repository at this point in the history
Typ "float" hinzugefügt
  • Loading branch information
jogibear9988 committed Aug 1, 2013
2 parents 387016d + 6cabaee commit c2f7307
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 36 deletions.
2 changes: 2 additions & 0 deletions src/Migrator.Providers/Dialect.cs
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,8 @@ public virtual string Default(object defaultValue)
{
if (!defaultValue.ToString().StartsWith("'"))
defaultValue = "'" + defaultValue + "'";
defaultValue = ((String)defaultValue).Replace("'", "''");
defaultValue = ((String)defaultValue).Substring(1, ((String)defaultValue).Length - 2);
}

return String.Format("DEFAULT {0}", defaultValue);
Expand Down
11 changes: 3 additions & 8 deletions src/Migrator.Providers/Impl/Oracle/OracleDialect.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,15 +89,10 @@ public override string Default(object defaultValue)
{
if (defaultValue.GetType().Equals(typeof(bool)))
{
defaultValue = ((bool)defaultValue) ? 1 : 0;
}
else if (defaultValue is String)
{
if (!defaultValue.ToString().StartsWith("'"))
defaultValue = "'" + defaultValue + "'";
}
return String.Format("DEFAULT {0}", (bool)defaultValue ? "1" : "0");
}

return String.Format("DEFAULT {0}", defaultValue);
return base.Default(defaultValue);
}
}
}
40 changes: 19 additions & 21 deletions src/Migrator.Providers/Impl/SqlServer/SqlServerDialect.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,12 @@ public SqlServerDialect()
RegisterColumnType(DbType.Currency, "MONEY");
RegisterColumnType(DbType.Date, "DATETIME");
RegisterColumnType(DbType.DateTime, "DATETIME");
RegisterColumnType(DbType.Decimal, "DECIMAL(19,5)");
RegisterColumnType(DbType.Decimal, 19, "DECIMAL(19, $l)");
RegisterColumnType(DbType.Double, "DOUBLE PRECISION"); //synonym for FLOAT(53)
RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER");
RegisterColumnType(DbType.Decimal, "DECIMAL(19,5)");
RegisterColumnType(DbType.Decimal, 19, "DECIMAL(19, $l)");
RegisterColumnType(DbType.Double, "DOUBLE PRECISION"); //synonym for FLOAT(53)
RegisterColumnType(DbType.Double, 24, "FLOAT(24)");
RegisterColumnType(DbType.Double, 53, "FLOAT(53)");
RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER");
RegisterColumnType(DbType.Int16, "SMALLINT");
RegisterColumnType(DbType.Int32, "INT");
RegisterColumnType(DbType.Int64, "BIGINT");
Expand All @@ -40,6 +42,8 @@ public SqlServerDialect()
RegisterColumnType(DbType.String, int.MaxValue, "NVARCHAR(max)");
//RegisterColumnType(DbType.String, 1073741823, "NTEXT");
RegisterColumnType(DbType.Time, "DATETIME");
RegisterColumnType(DbType.VarNumeric, "NUMERIC(18,0)");
RegisterColumnType(DbType.VarNumeric, 38, "NUMERIC($l,0)");

RegisterProperty(ColumnProperty.Identity, "IDENTITY");

Expand Down Expand Up @@ -83,26 +87,19 @@ public override string Quote(string value)
return string.Format(QuoteTemplate, value);
}

public override string Default(object defaultValue)
{
if (defaultValue.GetType().Equals(typeof (bool)))
{
defaultValue = ((bool) defaultValue) ? 1 : 0;
}
else if (defaultValue.GetType().Equals(typeof(Guid)))
public override string Default(object defaultValue)
{
if (defaultValue.GetType().Equals(typeof (bool)))
{
defaultValue = "'" + ((Guid) defaultValue).ToString("D") + "'";
return String.Format("DEFAULT {0}", (bool)defaultValue ? "1" : "0");
}
else if (defaultValue.GetType().Equals(typeof(string)))
else if (defaultValue.GetType().Equals(typeof(Guid)))
{
if (!string.IsNullOrEmpty((string)defaultValue))
defaultValue = "'" + defaultValue + "'";
else
defaultValue = "''";
return "DEFAULT '" + ((Guid) defaultValue).ToString("D") + "'";
}
else if (defaultValue.GetType().Equals(typeof(DateTime)))
{
defaultValue = "CONVERT(DateTime,'"
return "DEFAULT CONVERT(DateTime,'"
+ ((DateTime)defaultValue).Year.ToString("D4") + '-'
+ ((DateTime)defaultValue).Month.ToString("D2") + '-'
+ ((DateTime)defaultValue).Day.ToString("D2") + ' '
Expand All @@ -112,7 +109,8 @@ public override string Default(object defaultValue)
+ ((DateTime)defaultValue).Millisecond.ToString("D3")
+ "',121)";
}
return String.Format("DEFAULT ({0})", defaultValue);
}
}

return base.Default(defaultValue);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ public override Column[] GetColumns(string table)
using (
IDataReader reader =
ExecuteQuery(
String.Format("select COLUMN_NAME, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, COLUMN_DEFAULT from INFORMATION_SCHEMA.COLUMNS where table_name = '{0}'", table)))
String.Format("select COLUMN_NAME, IS_NULLABLE, DATA_TYPE, ISNULL(CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION), COLUMN_DEFAULT from INFORMATION_SCHEMA.COLUMNS where table_name = '{0}'", table)))
{
while (reader.Read())
{
Expand Down Expand Up @@ -279,6 +279,9 @@ public override Column[] GetColumns(string table)

if (column.Type == DbType.UInt16 || column.Type == DbType.UInt32 || column.Type == DbType.UInt64)
column.DefaultValue = UInt64.Parse(column.DefaultValue.ToString());

if (column.Type == DbType.Double || column.Type == DbType.Single)
column.DefaultValue = double.Parse(column.DefaultValue.ToString());
}

column.ColumnProperty |= isNullable ? ColumnProperty.Null : ColumnProperty.NotNull;
Expand Down
15 changes: 9 additions & 6 deletions src/Migrator.Providers/TypeNames.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,14 @@ public class TypeNames
readonly Dictionary<DbType, SortedList<int, string>> weighted =
new Dictionary<DbType, SortedList<int, string>>();

public DbType GetDbType(string type)
{
type = type.Trim().ToLower();
return defaults.Where(x => x.Value.Trim().ToLower().StartsWith(type)).Select(x => x.Key).FirstOrDefault();
}
public DbType GetDbType(string type)
{
type = type.Trim().ToLower();
var retval = defaults.Where(x => x.Value.Trim().ToLower().StartsWith(type)).Select(x => x.Key);
if (retval.Any())
return retval.First();
return weighted.Where(x => x.Value.Where(y => y.Value.Trim().ToLower().StartsWith(type)).Any()).Select(x => x.Key).FirstOrDefault();
}

/// <summary>
/// Get default type name for specified type
Expand Down Expand Up @@ -98,7 +101,7 @@ public string Get(DbType typecode, int size, int precision, int scale)
}
}
//Could not find a specific type for the size, using the default
return Replace(Get(typecode), size, precision, scale);
return Get(typecode);
}

static string Replace(string type, int size, int precision, int scale)
Expand Down

0 comments on commit c2f7307

Please sign in to comment.