public async Task ExplicitAutoQuoteAsync() { var configuration = TestConfigurationHelper.GetDefaultConfiguration(); configuration.AddResource("NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest.HeavyEntity.hbm.xml", GetType().Assembly); var dialect = Dialect.Dialect.GetDialect(configuration.GetDerivedProperties()); dialect.Keywords.Add("Abracadabra"); await(SchemaMetadataUpdater.UpdateAsync(configuration, dialect, CancellationToken.None)); SchemaMetadataUpdater.QuoteTableAndColumns(configuration, dialect); var cm = configuration.GetClassMapping(typeof(Order)); Assert.That(cm.Table.IsQuoted); var culs = new List <Column>(cm.Table.ColumnIterator); Assert.That(GetColumnByName(culs, "From").IsQuoted); Assert.That(GetColumnByName(culs, "And").IsQuoted); Assert.That(GetColumnByName(culs, "Select").IsQuoted); Assert.That(GetColumnByName(culs, "Abracadabra").IsQuoted); Assert.That(!GetColumnByName(culs, "Name").IsQuoted); }
public async Task UpdateReservedWordsInDialectAsync() { var reservedDb = new HashSet <string>(StringComparer.OrdinalIgnoreCase); var configuration = TestConfigurationHelper.GetDefaultConfiguration(); var dialect = Dialect.Dialect.GetDialect(configuration.Properties); var connectionHelper = new ManagedProviderConnectionHelper(configuration.Properties); await(connectionHelper.PrepareAsync(CancellationToken.None)); try { var metaData = dialect.GetDataBaseSchema(connectionHelper.Connection); foreach (var rw in metaData.GetReservedWords()) { reservedDb.Add(rw.ToLowerInvariant()); } } finally { connectionHelper.Release(); } var sf = (ISessionFactoryImplementor)configuration.BuildSessionFactory(); await(SchemaMetadataUpdater.UpdateAsync(sf, CancellationToken.None)); var match = reservedDb.Intersect(sf.Dialect.Keywords, StringComparer.OrdinalIgnoreCase); // tests that nothing in the first metaData.GetReservedWords() is left out of the second metaData.GetReservedWords() call. // i.e. always passes. Assert.That(match, Is.EquivalentTo(reservedDb)); }
public async Task WhenConfiguredOnlyExplicitAutoQuoteAsync() { var configuration = TestConfigurationHelper.GetDefaultConfiguration(); var driverClass = ReflectHelper.ClassForName(configuration.GetProperty(Environment.ConnectionDriver)); // Test uses the default dialect driver, which will not accept Odbc or OleDb connection strings. if (typeof(OdbcDriver).IsAssignableFrom(driverClass) || typeof(OleDbDriver).IsAssignableFrom(driverClass)) { Assert.Ignore("Test is not compatible with OleDb or ODBC driver connection strings"); } var configuredDialect = Dialect.Dialect.GetDialect(); if (!configuredDialect.DefaultProperties.ContainsKey(Environment.ConnectionDriver)) { Assert.Ignore(GetType() + " does not apply to " + configuredDialect); } configuration.Properties.Remove(Environment.ConnectionDriver); configuration.AddResource("NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest.HeavyEntity.hbm.xml", GetType().Assembly); var dialect = Dialect.Dialect.GetDialect(configuration.GetDerivedProperties()); dialect.Keywords.Add("Abracadabra"); await(SchemaMetadataUpdater.UpdateAsync(configuration, dialect, CancellationToken.None)); SchemaMetadataUpdater.QuoteTableAndColumns(configuration, dialect); var cm = configuration.GetClassMapping(typeof(Order)); Assert.That(cm.Table.IsQuoted); var culs = new List <Column>(cm.Table.ColumnIterator); Assert.That(GetColumnByName(culs, "From").IsQuoted); Assert.That(GetColumnByName(culs, "And").IsQuoted); Assert.That(GetColumnByName(culs, "Select").IsQuoted); Assert.That(GetColumnByName(culs, "Abracadabra").IsQuoted); Assert.That(!GetColumnByName(culs, "Name").IsQuoted); }