Skip to content

Commit fc949de

Browse files
David EllingsworthDavid Ellingsworth
authored andcommitted
GH-3530: Attempt to manually create the schema using the current dialect.
1 parent fafa3ce commit fc949de

File tree

1 file changed

+74
-0
lines changed
  • src/NHibernate.Test/NHSpecificTest/GH3530

1 file changed

+74
-0
lines changed

src/NHibernate.Test/NHSpecificTest/GH3530/Fixture.cs

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
using System;
2+
using System.Data;
23
using System.Globalization;
4+
using System.Reflection;
5+
using System.Text;
6+
using NHibernate.SqlTypes;
37
using NUnit.Framework;
48

59
namespace NHibernate.Test.NHSpecificTest.GH3530
@@ -32,6 +36,76 @@ protected override void OnTearDown()
3236
}
3337
}
3438

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+
35109
[TestCaseSource(nameof(GetTestCases))]
36110
public void TestLocales(CultureInfo from, CultureInfo to)
37111
{

0 commit comments

Comments
 (0)