From: <fab...@us...> - 2009-06-06 20:16:57
|
Revision: 4423 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4423&view=rev Author: fabiomaulo Date: 2009-06-06 20:16:42 +0000 (Sat, 06 Jun 2009) Log Message: ----------- - Fix NH-1814 (by default) - Fix NH-188 (so far explicitly or trough configuration) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Cfg/Environment.cs trunk/nhibernate/src/NHibernate/Cfg/Settings.cs trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractDataBaseSchema.cs trunk/nhibernate/src/NHibernate/Dialect/Schema/IDataBaseSchema.cs trunk/nhibernate/src/NHibernate/Impl/SessionFactoryImpl.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate/nhibernate-configuration.xsd trunk/nhibernate/src/NHibernate.Test/App.config trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaMetadataUpdater.cs trunk/nhibernate/src/NHibernate.Test/CfgTest/SettingsFactoryFixture.cs trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/ trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/HeavyEntity.cs trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/HeavyEntity.hbm.xml trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs Modified: trunk/nhibernate/src/NHibernate/Cfg/Environment.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Environment.cs 2009-06-05 22:49:48 UTC (rev 4422) +++ trunk/nhibernate/src/NHibernate/Cfg/Environment.cs 2009-06-06 20:16:42 UTC (rev 4423) @@ -135,9 +135,9 @@ // The classname of the HQL query parser factory public const string QueryTranslator = "query.factory_class"; - // Unused, not implemented public const string QueryImports = "query.imports"; public const string Hbm2ddlAuto = "hbm2ddl.auto"; + public const string Hbm2ddlKeyWords = "hbm2ddl.keywords"; // Unused, not implemented public const string SqlExceptionConverter = "sql_exception_converter"; Modified: trunk/nhibernate/src/NHibernate/Cfg/Settings.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Settings.cs 2009-06-05 22:49:48 UTC (rev 4422) +++ trunk/nhibernate/src/NHibernate/Cfg/Settings.cs 2009-06-06 20:16:42 UTC (rev 4423) @@ -59,6 +59,10 @@ public bool IsAutoValidateSchema { get; internal set; } + public bool IsAutoQuoteEnabled { get; internal set; } + + public bool IsKeywordsImportEnabled { get; internal set; } + public bool IsQueryCacheEnabled { get; internal set; } public bool IsStructuredCacheEntriesEnabled { get; internal set; } Modified: trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs 2009-06-05 22:49:48 UTC (rev 4422) +++ trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs 2009-06-06 20:16:42 UTC (rev 4423) @@ -140,6 +140,7 @@ log.Info("Query language substitutions: " + CollectionPrinter.ToString((IDictionary) querySubstitutions)); } + #region Hbm2DDL string autoSchemaExport = PropertiesHelper.GetString(Environment.Hbm2ddlAuto, properties, null); if ("update" == autoSchemaExport) { @@ -158,6 +159,29 @@ { settings.IsAutoValidateSchema = true; } + + string autoKeyWordsImport = PropertiesHelper.GetString(Environment.Hbm2ddlKeyWords, properties, "not-defined"); + switch (autoKeyWordsImport.ToLowerInvariant()) + { + case "none": + settings.IsKeywordsImportEnabled = false; + settings.IsAutoQuoteEnabled = false; + break; + case "keywords": + settings.IsKeywordsImportEnabled = true; + break; + case "auto-quote": + settings.IsKeywordsImportEnabled = true; + settings.IsAutoQuoteEnabled = true; + break; + case "not-defined": + settings.IsKeywordsImportEnabled = true; + settings.IsAutoQuoteEnabled = false; + break; + } + + #endregion + bool useSecondLevelCache = PropertiesHelper.GetBoolean(Environment.UseSecondLevelCache, properties, true); bool useQueryCache = PropertiesHelper.GetBoolean(Environment.UseQueryCache, properties); @@ -305,11 +329,6 @@ } } - internal SettingsFactory() - { - //should not be publically creatable - } - private static ConnectionReleaseMode ParseConnectionReleaseMode(string name) { switch (name) Modified: trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractDataBaseSchema.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractDataBaseSchema.cs 2009-06-05 22:49:48 UTC (rev 4422) +++ trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractDataBaseSchema.cs 2009-06-06 20:16:42 UTC (rev 4423) @@ -1,5 +1,6 @@ using System.Data; using System.Data.Common; +using Iesi.Collections.Generic; namespace NHibernate.Dialect.Schema { @@ -90,6 +91,17 @@ return connection.GetSchema(ForeignKeysSchemaName, restrictions); } + public virtual ISet<string> GetReservedWords() + { + var result = new HashedSet<string>(); + DataTable dtReservedWords = connection.GetSchema(DbMetaDataCollectionNames.ReservedWords); + foreach (DataRow row in dtReservedWords.Rows) + { + result.Add(row["ReservedWord"].ToString()); + } + return result; + } + protected virtual string ForeignKeysSchemaName { get { return "ForeignKeys"; } Modified: trunk/nhibernate/src/NHibernate/Dialect/Schema/IDataBaseSchema.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Schema/IDataBaseSchema.cs 2009-06-05 22:49:48 UTC (rev 4422) +++ trunk/nhibernate/src/NHibernate/Dialect/Schema/IDataBaseSchema.cs 2009-06-06 20:16:42 UTC (rev 4423) @@ -1,4 +1,5 @@ using System.Data; +using Iesi.Collections.Generic; namespace NHibernate.Dialect.Schema { @@ -115,5 +116,11 @@ /// <param name="table">A table name</param> /// <returns>A description of the foreign keys available</returns> DataTable GetForeignKeys(string catalog, string schema, string table); + + /// <summary> + /// Get all reserved words + /// </summary> + /// <returns>A set of reserved words</returns> + ISet<string> GetReservedWords(); } } Modified: trunk/nhibernate/src/NHibernate/Impl/SessionFactoryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/SessionFactoryImpl.cs 2009-06-05 22:49:48 UTC (rev 4422) +++ trunk/nhibernate/src/NHibernate/Impl/SessionFactoryImpl.cs 2009-06-06 20:16:42 UTC (rev 4423) @@ -162,6 +162,22 @@ log.Debug("instantiating session factory with properties: " + CollectionPrinter.ToString(properties)); } + try + { + if (settings.IsKeywordsImportEnabled) + { + SchemaMetadataUpdater.Update(this); + } + if (settings.IsAutoQuoteEnabled) + { + SchemaMetadataUpdater.QuoteTableAndColumns(cfg); + } + } + catch (NotSupportedException) + { + // Ignore if the Dialect does not provide DataBaseSchema + } + #region Caches settings.CacheProvider.Start(properties); #endregion Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-06-05 22:49:48 UTC (rev 4422) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-06-06 20:16:42 UTC (rev 4423) @@ -600,6 +600,7 @@ <Compile Include="Param\VersionTypeSeedParameterSpecification.cs" /> <Compile Include="Proxy\AbstractProxyFactory.cs" /> <Compile Include="SqlCommand\InsertSelect.cs" /> + <Compile Include="Tool\hbm2ddl\SchemaMetadataUpdater.cs" /> <Compile Include="Transaction\AdoNetWithDistrubtedTransactionFactory.cs" /> <Compile Include="Transform\ToListResultTransformer.cs" /> <Compile Include="Util\NullableDictionary.cs" /> Added: trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaMetadataUpdater.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaMetadataUpdater.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaMetadataUpdater.cs 2009-06-06 20:16:42 UTC (rev 4423) @@ -0,0 +1,79 @@ +using Iesi.Collections.Generic; +using NHibernate.Cfg; +using NHibernate.Engine; +using NHibernate.Mapping; +using System.Collections.Generic; + +namespace NHibernate.Tool.hbm2ddl +{ + // Candidate to be exstensions of ISessionFactory and Configuration + public static class SchemaMetadataUpdater + { + public static void Update(ISessionFactory sessionFactory) + { + var factory = (ISessionFactoryImplementor) sessionFactory; + var dialect = factory.Dialect; + var connectionHelper = new SuppliedConnectionProviderConnectionHelper(factory.ConnectionProvider); + factory.Dialect.Keywords.AddAll(GetReservedWords(dialect, connectionHelper)); + } + + public static void QuoteTableAndColumns(Configuration configuration) + { + ISet<string> reservedDb = GetReservedWords(configuration.Properties); + foreach (var cm in configuration.ClassMappings) + { + QuoteTable(cm.Table, reservedDb); + } + foreach (var cm in configuration.CollectionMappings) + { + QuoteTable(cm.Table, reservedDb); + } + } + + private static ISet<string> GetReservedWords(IDictionary<string, string> cfgProperties) + { + var dialect = Dialect.Dialect.GetDialect(cfgProperties); + var connectionHelper = new ManagedProviderConnectionHelper(cfgProperties); + return GetReservedWords(dialect, connectionHelper); + } + + private static ISet<string> GetReservedWords(Dialect.Dialect dialect, IConnectionHelper connectionHelper) + { + ISet<string> reservedDb = new HashedSet<string>(); + connectionHelper.Prepare(); + try + { + var metaData = dialect.GetDataBaseSchema(connectionHelper.Connection); + foreach (var rw in metaData.GetReservedWords()) + { + reservedDb.Add(rw.ToLowerInvariant()); + } + } + finally + { + connectionHelper.Release(); + } + return reservedDb; + } + + private static void QuoteTable(Table table, ICollection<string> reservedDb) + { + if (!table.IsQuoted && reservedDb.Contains(table.Name.ToLowerInvariant())) + { + table.Name = GetNhQuoted(table.Name); + } + foreach (var column in table.ColumnIterator) + { + if (!column.IsQuoted && reservedDb.Contains(column.Name.ToLowerInvariant())) + { + column.Name = GetNhQuoted(column.Name); + } + } + } + + private static string GetNhQuoted(string name) + { + return "`" + name + "`"; + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/nhibernate-configuration.xsd =================================================================== --- trunk/nhibernate/src/NHibernate/nhibernate-configuration.xsd 2009-06-05 22:49:48 UTC (rev 4422) +++ trunk/nhibernate/src/NHibernate/nhibernate-configuration.xsd 2009-06-06 20:16:42 UTC (rev 4423) @@ -84,6 +84,7 @@ <xs:enumeration value="query.factory_class" /> <xs:enumeration value="query.imports" /> <xs:enumeration value="hbm2ddl.auto" /> + <xs:enumeration value="hbm2ddl.keywords" /> <xs:enumeration value="sql_exception_converter" /> <xs:enumeration value="adonet.wrap_result_sets" /> <xs:enumeration value="prepare_sql" /> Modified: trunk/nhibernate/src/NHibernate.Test/App.config =================================================================== --- trunk/nhibernate/src/NHibernate.Test/App.config 2009-06-05 22:49:48 UTC (rev 4422) +++ trunk/nhibernate/src/NHibernate.Test/App.config 2009-06-06 20:16:42 UTC (rev 4423) @@ -54,6 +54,7 @@ --> <property name="adonet.batch_size">10</property> <property name="connection.isolation">ReadCommitted</property> + <property name="hbm2ddl.keywords">none</property> <property name="format_sql">true</property> <!-- This is the System.Data.dll provider for MSSQL Server --> Added: trunk/nhibernate/src/NHibernate.Test/CfgTest/SettingsFactoryFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/CfgTest/SettingsFactoryFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/CfgTest/SettingsFactoryFixture.cs 2009-06-06 20:16:42 UTC (rev 4423) @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using NHibernate.Cfg; +using NUnit.Framework; + +namespace NHibernate.Test.CfgTest +{ + [TestFixture] + public class SettingsFactoryFixture + { + [Test] + public void DefaultValueForKeyWords() + { + var properties = new Dictionary<string, string> + { + {"dialect", typeof (Dialect.MsSql2005Dialect).FullName} + }; + var settings = new SettingsFactory().BuildSettings(properties); + Assert.That(settings.IsKeywordsImportEnabled); + Assert.That(!settings.IsAutoQuoteEnabled); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-05 22:49:48 UTC (rev 4422) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-06 20:16:42 UTC (rev 4423) @@ -110,6 +110,7 @@ <Compile Include="CfgTest\LocatedInTestAssembly.cs" /> <Compile Include="CfgTest\MappingDocumentAggregatorTests.cs" /> <Compile Include="CfgTest\MappingDocumentParserTests.cs" /> + <Compile Include="CfgTest\SettingsFactoryFixture.cs" /> <Compile Include="Classic\EntityWithLifecycle.cs" /> <Compile Include="Classic\LifecycleFixture.cs" /> <Compile Include="Classic\ValidatableFixture.cs" /> @@ -1157,6 +1158,8 @@ <Compile Include="Stateless\StatelessWithRelationsFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaExportTests\WithColumnTag.cs" /> <Compile Include="Tools\hbm2ddl\SchemaExportTests\WithColumnTagFixture.cs" /> + <Compile Include="Tools\hbm2ddl\SchemaMetadataUpdaterTest\HeavyEntity.cs" /> + <Compile Include="Tools\hbm2ddl\SchemaMetadataUpdaterTest\SchemaMetadataUpdaterFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaUpdate\MigrationFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaUpdate\Version.cs" /> <Compile Include="SecondLevelCacheTest\AnotherItem.cs" /> @@ -1894,6 +1897,7 @@ <EmbeddedResource Include="CacheTest\EntityWithFilters.xml" /> <EmbeddedResource Include="Classic\EntityWithLifecycle.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="Tools\hbm2ddl\SchemaMetadataUpdaterTest\HeavyEntity.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1182\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1171\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1400\Mappings.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/HeavyEntity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/HeavyEntity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/HeavyEntity.cs 2009-06-06 20:16:42 UTC (rev 4423) @@ -0,0 +1,11 @@ +namespace NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest +{ + public class Order + { + public string Select { get; set; } + public string From { get; set; } + public string And { get; set; } + public string Column { get; set; } + public string Name { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/HeavyEntity.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/HeavyEntity.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/HeavyEntity.hbm.xml 2009-06-06 20:16:42 UTC (rev 4423) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest" + assembly="NHibernate.Test" + default-lazy="false"> + + <class name="Order"> + <id type="int"> + <generator class="native"/> + </id> + <property name="Select"/> + <property name="From"/> + <property name="And"/> + <property name="Column"/> + <property name="Name"/> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs 2009-06-06 20:16:42 UTC (rev 4423) @@ -0,0 +1,169 @@ +using System.Collections.Generic; +using Iesi.Collections.Generic; +using NHibernate.Cfg; +using NHibernate.Engine; +using NHibernate.Mapping; +using NHibernate.Tool.hbm2ddl; +using NUnit.Framework; + +namespace NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest +{ + [TestFixture] + public class SchemaMetadataUpdaterFixture + { + [Test] + public void CanRetrieveReservedWords() + { + var configuration = TestConfigurationHelper.GetDefaultConfiguration(); + var dialect = Dialect.Dialect.GetDialect(configuration.Properties); + var connectionHelper = new ManagedProviderConnectionHelper(configuration.Properties); + connectionHelper.Prepare(); + try + { + var metaData = dialect.GetDataBaseSchema(connectionHelper.Connection); + var reserved = metaData.GetReservedWords(); + Assert.That(reserved, Is.Not.Empty); + Assert.That(reserved, Has.Member("SELECT")); + Assert.That(reserved, Has.Member("FROM")); + } + finally + { + connectionHelper.Release(); + } + } + + [Test] + public void UpdateReservedWordsInDialect() + { + var reservedDb = new HashedSet<string>(); + var configuration = TestConfigurationHelper.GetDefaultConfiguration(); + var dialect = Dialect.Dialect.GetDialect(configuration.Properties); + var connectionHelper = new ManagedProviderConnectionHelper(configuration.Properties); + connectionHelper.Prepare(); + 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(); + SchemaMetadataUpdater.Update(sf); + var match = reservedDb.Intersect(sf.Dialect.Keywords); + Assert.That(match, Is.EquivalentTo(reservedDb)); + } + + [Test] + public void ExplicitAutoQuote() + { + var configuration = TestConfigurationHelper.GetDefaultConfiguration(); + configuration.AddResource("NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest.HeavyEntity.hbm.xml", + GetType().Assembly); + + SchemaMetadataUpdater.QuoteTableAndColumns(configuration); + + 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, "Column").IsQuoted); + Assert.That(!GetColumnByName(culs, "Name").IsQuoted); + } + + [Test] + public void AutoQuoteTableAndColumnsAtStratup() + { + var configuration = TestConfigurationHelper.GetDefaultConfiguration(); + configuration.SetProperty(Environment.Hbm2ddlKeyWords, "auto-quote"); + configuration.AddResource("NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest.HeavyEntity.hbm.xml", + GetType().Assembly); + configuration.BuildSessionFactory(); + 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, "Column").IsQuoted); + Assert.That(!GetColumnByName(culs, "Name").IsQuoted); + } + + [Test] + public void AutoQuoteTableAndColumnsAtStratupIncludeKeyWordsImport() + { + var reservedDb = new HashedSet<string>(); + var configuration = TestConfigurationHelper.GetDefaultConfiguration(); + var dialect = Dialect.Dialect.GetDialect(configuration.Properties); + var connectionHelper = new ManagedProviderConnectionHelper(configuration.Properties); + connectionHelper.Prepare(); + try + { + var metaData = dialect.GetDataBaseSchema(connectionHelper.Connection); + foreach (var rw in metaData.GetReservedWords()) + { + reservedDb.Add(rw.ToLowerInvariant()); + } + } + finally + { + connectionHelper.Release(); + } + + configuration.SetProperty(Environment.Hbm2ddlKeyWords, "auto-quote"); + configuration.AddResource("NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest.HeavyEntity.hbm.xml", + GetType().Assembly); + var sf = (ISessionFactoryImplementor)configuration.BuildSessionFactory(); + var match = reservedDb.Intersect(sf.Dialect.Keywords); + Assert.That(match, Is.EquivalentTo(reservedDb)); + } + + private static Column GetColumnByName(IEnumerable<Column> culs, string colName) + { + Column result= null; + foreach (var column in culs) + { + if (column.Name.Equals(colName)) + { + result = column; + break; + } + } + return result; + } + + [Test] + public void CanWorkWithAutoQuoteTableAndColumnsAtStratup() + { + var configuration = TestConfigurationHelper.GetDefaultConfiguration(); + configuration.SetProperty(Environment.Hbm2ddlKeyWords, "auto-quote"); + configuration.SetProperty(Environment.Hbm2ddlAuto, "create-drop"); + configuration.AddResource("NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest.HeavyEntity.hbm.xml", + GetType().Assembly); + var sf = configuration.BuildSessionFactory(); + using (ISession s = sf.OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.Save(new Order {From = "from", Column = "column", And = "order"}); + t.Commit(); + } + + using (ISession s = sf.OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.Delete("from Order"); + t.Commit(); + } + + new SchemaExport(configuration).Drop(false, false); + } + + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |