-
Notifications
You must be signed in to change notification settings - Fork 75
Expand file tree
/
Copy pathSqlServerDialect.cs
More file actions
80 lines (72 loc) · 3.17 KB
/
Copy pathSqlServerDialect.cs
File metadata and controls
80 lines (72 loc) · 3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
using System;
using System.Data;
using Migrator.Framework;
namespace Migrator.Providers.SqlServer
{
public class SqlServerDialect : Dialect
{
public SqlServerDialect()
{
RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)");
RegisterColumnType(DbType.AnsiStringFixedLength, 8000, "CHAR($l)");
RegisterColumnType(DbType.AnsiString, "VARCHAR(255)");
RegisterColumnType(DbType.AnsiString, 8000, "VARCHAR($l)");
RegisterColumnType(DbType.AnsiString, 2147483647, "TEXT");
RegisterColumnType(DbType.Binary, "VARBINARY(8000)");
RegisterColumnType(DbType.Binary, 8000, "VARBINARY($l)");
RegisterColumnType(DbType.Binary, 2147483647, "IMAGE");
RegisterColumnType(DbType.Boolean, "BIT");
RegisterColumnType(DbType.Byte, "TINYINT");
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.Int16, "SMALLINT");
RegisterColumnType(DbType.Int32, "INT");
RegisterColumnType(DbType.Int64, "BIGINT");
RegisterColumnType(DbType.Single, "REAL"); //synonym for FLOAT(24)
RegisterColumnType(DbType.StringFixedLength, "NCHAR(255)");
RegisterColumnType(DbType.StringFixedLength, 4000, "NCHAR($l)");
RegisterColumnType(DbType.String, "NVARCHAR(255)");
RegisterColumnType(DbType.String, 4000, "NVARCHAR($l)");
RegisterColumnType(DbType.String, 1073741823, "NTEXT");
RegisterColumnType(DbType.Time, "DATETIME");
RegisterProperty(ColumnProperty.Identity, "IDENTITY");
}
public override ITransformationProvider GetTransformationProvider(Dialect dialect, string connectionString)
{
return new SqlServerTransformationProvider(dialect, connectionString);
}
public override bool SupportsIndex
{
get { return false; }
}
public override bool ColumnNameNeedsQuote
{
get { return false; }
}
public override string QuoteTemplate
{
get { return "[{0}]"; }
}
public override string Default(object defaultValue)
{
if (defaultValue.GetType().Equals(typeof (bool)))
{
defaultValue = ((bool) defaultValue) ? 1 : 0;
}
else if (defaultValue.GetType().Equals(typeof(Guid)))
{
defaultValue = "'" + ((Guid) defaultValue).ToString("D") + "'";
}
else if (defaultValue.GetType().Equals(typeof(string)) && !string.IsNullOrEmpty((string)defaultValue))
{
defaultValue = "'" + defaultValue + "'";
}
return String.Format("DEFAULT {0}", defaultValue);
}
}
}