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