|
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.
|