From: <dav...@us...> - 2009-03-11 21:26:12
|
Revision: 4124 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4124&view=rev Author: davybrion Date: 2009-03-11 21:26:06 +0000 (Wed, 11 Mar 2009) Log Message: ----------- applied patch from Robert Dusek for NH-1698 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs trunk/nhibernate/src/NHibernate/Mapping/PrimaryKey.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaExportTests/NonClusteredPrimaryKeyFixture.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2009-03-11 04:20:07 UTC (rev 4123) +++ trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2009-03-11 21:26:06 UTC (rev 4124) @@ -397,6 +397,14 @@ get { return String.Empty; } } + /// <summary> + /// The keyword used to create a primary key constraint + /// </summary> + public virtual string PrimaryKeyString + { + get { return "primary key"; } + } + #region database type mapping support /// <summary> Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2009-03-11 04:20:07 UTC (rev 4123) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2009-03-11 21:26:06 UTC (rev 4124) @@ -258,6 +258,14 @@ get { return false; } } + /// <summary> + /// Sql Server 2005 defaults to creating a clustered primary key, which is typically undesirable. + /// </summary> + public override string PrimaryKeyString + { + get { return base.PrimaryKeyString + " nonclustered"; } + } + /// <summary> /// This specialized string tokenizier will break a string to tokens, taking /// into account single quotes, parenthesis and commas and [ ] Modified: trunk/nhibernate/src/NHibernate/Mapping/PrimaryKey.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/PrimaryKey.cs 2009-03-11 04:20:07 UTC (rev 4123) +++ trunk/nhibernate/src/NHibernate/Mapping/PrimaryKey.cs 2009-03-11 21:26:06 UTC (rev 4124) @@ -20,7 +20,7 @@ /// </returns> public string SqlConstraintString(Dialect.Dialect d, string defaultSchema) { - StringBuilder buf = new StringBuilder("primary key ("); + StringBuilder buf = new StringBuilder(d.PrimaryKeyString + " ("); int i = 0; foreach (Column col in ColumnIterator) { Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-11 04:20:07 UTC (rev 4123) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-11 21:26:06 UTC (rev 4124) @@ -948,6 +948,7 @@ <Compile Include="SqlTest\Custom\CustomStoredProcSupportTest.cs" /> <Compile Include="SqlTest\Custom\MySQL\MySQLTest.cs" /> <Compile Include="SqlTest\Custom\Oracle\OracleCustomSQLFixture.cs" /> + <Compile Include="Tools\hbm2ddl\SchemaExportTests\NonClusteredPrimaryKeyFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaExportTests\WithColumnTag.cs" /> <Compile Include="Tools\hbm2ddl\SchemaExportTests\WithColumnTagFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaUpdate\MigrationFixture.cs" /> Added: trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaExportTests/NonClusteredPrimaryKeyFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaExportTests/NonClusteredPrimaryKeyFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaExportTests/NonClusteredPrimaryKeyFixture.cs 2009-03-11 21:26:06 UTC (rev 4124) @@ -0,0 +1,38 @@ +using System.IO; +using System.Reflection; +using System.Text; + +using NHibernate.Cfg; +using NHibernate.Dialect; +using NHibernate.Tool.hbm2ddl; + +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.Tools.hbm2ddl.SchemaExportTests +{ + [TestFixture] + public class NonClusteredPrimaryKeyFixture + { + [Test] + public void ShouldCreateSchemaWithNonClusterdPrimaryKeyForMsSql2005Dialect() + { + var script = new StringBuilder(); + const string mapping = "NHibernate.Test.Tools.hbm2ddl.SchemaExportTests.WithColumnTag.hbm.xml"; + + Configuration cfg = TestConfigurationHelper.GetDefaultConfiguration(); + + if (cfg.Properties[Environment.Dialect] != typeof(MsSql2005Dialect).FullName) + { + Assert.Ignore("this test only applies for MsSql2005Dialect"); + } + + using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(mapping)) + cfg.AddInputStream(stream); + new SchemaExport(cfg).Execute(s => script.AppendLine(s), false, false, false); + + string wholeScript = script.ToString(); + Assert.That(wholeScript, Text.Contains("primary key nonclustered (id)")); + } + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |