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));
        }
Example #3
0
        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);
        }