|
9 | 9 |
|
10 | 10 |
|
11 | 11 | using System;
|
| 12 | +using System.Data; |
12 | 13 | using System.Globalization;
|
| 14 | +using System.Reflection; |
| 15 | +using System.Text; |
| 16 | +using NHibernate.SqlTypes; |
13 | 17 | using NUnit.Framework;
|
14 | 18 |
|
15 | 19 | namespace NHibernate.Test.NHSpecificTest.GH3530
|
@@ -43,6 +47,76 @@ protected override void OnTearDown()
|
43 | 47 | }
|
44 | 48 | }
|
45 | 49 |
|
| 50 | + protected override void CreateSchema() |
| 51 | + { |
| 52 | + var sb = new StringBuilder(); |
| 53 | + var intType = Dialect.GetTypeName(SqlTypeFactory.Int32); |
| 54 | + var stringType = Dialect.GetTypeName(SqlTypeFactory.GetAnsiString(255)); |
| 55 | + |
| 56 | + var catalog = GetQuotedDefaultCatalog(); |
| 57 | + var schema = GetQuotedDefaultSchema(); |
| 58 | + var table = GetQualifiedName(catalog, schema, "LocaleEntity"); |
| 59 | + |
| 60 | + sb.Append($"{Dialect.CreateTableString} {table} ("); |
| 61 | + sb.Append($"Id "); |
| 62 | + |
| 63 | + if (Dialect.HasDataTypeInIdentityColumn) |
| 64 | + { |
| 65 | + sb.Append($"{intType}"); |
| 66 | + } |
| 67 | + sb.Append($" {Dialect.GetIdentityColumnString(DbType.Int32)}"); |
| 68 | + |
| 69 | + // Generate columns |
| 70 | + sb.Append($"IntegerValue {stringType}, "); |
| 71 | + sb.Append($"DateTimeValue {stringType}, "); |
| 72 | + sb.Append($"DoubleValue {stringType}, "); |
| 73 | + sb.Append($"DecimalValue {stringType}"); |
| 74 | + |
| 75 | + // Add the primary key contraint for the identity column |
| 76 | + if (Dialect.GenerateTablePrimaryKeyConstraintForIdentityColumn) |
| 77 | + { |
| 78 | + sb.Append($", {Dialect.PrimaryKeyString} ( Id )"); |
| 79 | + } |
| 80 | + sb.Append(")"); |
| 81 | + |
| 82 | + using (var cn = Sfi.ConnectionProvider.GetConnection()) |
| 83 | + { |
| 84 | + try |
| 85 | + { |
| 86 | + using (var cmd = cn.CreateCommand()) |
| 87 | + { |
| 88 | + cmd.CommandText = sb.ToString(); |
| 89 | + cmd.ExecuteNonQuery(); |
| 90 | + } |
| 91 | + } |
| 92 | + finally |
| 93 | + { |
| 94 | + Sfi.ConnectionProvider.CloseConnection(cn); |
| 95 | + } |
| 96 | + } |
| 97 | + } |
| 98 | + |
| 99 | + private string GetQuotedDefaultCatalog() |
| 100 | + { |
| 101 | + var t = cfg.GetType(); |
| 102 | + var getQuotedDefaultCatalog = t.GetMethod("GetQuotedDefaultCatalog", BindingFlags.Instance | BindingFlags.NonPublic); |
| 103 | + |
| 104 | + return (string)getQuotedDefaultCatalog.Invoke(cfg, [Dialect]); |
| 105 | + } |
| 106 | + |
| 107 | + private string GetQuotedDefaultSchema() |
| 108 | + { |
| 109 | + var t = cfg.GetType(); |
| 110 | + var getQuotedDefaultSchema = t.GetMethod("GetQuotedDefaultSchema", BindingFlags.Instance | BindingFlags.NonPublic); |
| 111 | + |
| 112 | + return (string) getQuotedDefaultSchema.Invoke(cfg, [Dialect]); |
| 113 | + } |
| 114 | + |
| 115 | + private string GetQualifiedName(string catalog, string schema, string name) |
| 116 | + { |
| 117 | + return Dialect.Qualify(catalog, schema, name); |
| 118 | + } |
| 119 | + |
46 | 120 | [TestCaseSource(nameof(GetTestCases))]
|
47 | 121 | public async Task TestLocalesAsync(CultureInfo from, CultureInfo to)
|
48 | 122 | {
|
|
0 commit comments