|
From: <fab...@us...> - 2011-03-21 15:06:37
|
Revision: 5495
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5495&view=rev
Author: fabiomaulo
Date: 2011-03-21 15:06:30 +0000 (Mon, 21 Mar 2011)
Log Message:
-----------
Fix NH-2530
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Id/TableGenerator.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Domain.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Mappings.hbm.xml
Modified: trunk/nhibernate/src/NHibernate/Id/TableGenerator.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Id/TableGenerator.cs 2011-03-21 14:11:22 UTC (rev 5494)
+++ trunk/nhibernate/src/NHibernate/Id/TableGenerator.cs 2011-03-21 15:06:30 UTC (rev 5495)
@@ -231,7 +231,15 @@
rs = qps.ExecuteReader();
if (!rs.Read())
{
- string err = "could not read a hi value - you need to populate the table: " + tableName;
+ string err;
+ if (string.IsNullOrEmpty(whereClause))
+ {
+ err = "could not read a hi value - you need to populate the table: " + tableName;
+ }
+ else
+ {
+ err = string.Format("could not read a hi value from table '{0}' using the where clause ({1})- you need to populate the table.", tableName, whereClause);
+ }
log.Error(err);
throw new IdentifierGenerationException(err);
}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Domain.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Domain.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Domain.cs 2011-03-21 15:06:30 UTC (rev 5495)
@@ -0,0 +1,14 @@
+namespace NHibernate.Test.NHSpecificTest.NH2530
+{
+ public abstract class Product
+ {
+ public virtual int Id { get; set; }
+ public virtual string Title { get; set; }
+ }
+
+ public class Customer
+ {
+ public virtual int Id { get; set; }
+ public virtual string Name { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Fixture.cs 2011-03-21 15:06:30 UTC (rev 5495)
@@ -0,0 +1,48 @@
+using System.Collections.Generic;
+using System.Text;
+using Iesi.Collections.Generic;
+using NHibernate.Dialect;
+using NHibernate.Mapping;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.NHSpecificTest.NH2530
+{
+ public class Fixture: BugTestCase
+ {
+ protected override void Configure(Cfg.Configuration configuration)
+ {
+ configuration.AddAuxiliaryDatabaseObject(CreateHighLowScript(new[] { typeof(Product) }));
+ }
+
+ private IAuxiliaryDatabaseObject CreateHighLowScript(IEnumerable<System.Type> entities)
+ {
+ var script = new StringBuilder(1024);
+ script.AppendLine("DELETE FROM NextHighVaues;");
+ script.AppendLine("ALTER TABLE NextHighVaues ADD Entity VARCHAR(128) NOT NULL;");
+ script.AppendLine("CREATE NONCLUSTERED INDEX IdxNextHighVauesEntity ON NextHighVaues (Entity ASC);");
+ script.AppendLine("GO");
+ foreach (var entity in entities)
+ {
+ script.AppendLine(string.Format("INSERT INTO [NextHighVaues] (Entity, NextHigh) VALUES ('{0}',1);", entity.Name));
+ }
+ return new SimpleAuxiliaryDatabaseObject(script.ToString(), null, new HashedSet<string> { typeof(MsSql2000Dialect).FullName, typeof(MsSql2005Dialect).FullName, typeof(MsSql2008Dialect).FullName });
+ }
+
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return (dialect is Dialect.MsSql2000Dialect);
+ }
+
+ [Test]
+ public void WhenTryToGetHighThenExceptionShouldContainWhereClause()
+ {
+ using (var session = OpenSession())
+ using (var tx = session.BeginTransaction())
+ {
+ var customer = new Customer { Name = "Mengano" };
+ session.Executing(s => s.Persist(customer)).Throws().And.ValueOf.Message.Should().Contain("Entity = 'Customer'");
+ }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2530/Mappings.hbm.xml 2011-03-21 15:06:30 UTC (rev 5495)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Mapping extracted from ConfORM usage example (ConfOrm.UsageExamples.HighLowPerEntity) -->
+<hibernate-mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ namespace="NHibernate.Test.NHSpecificTest.NH2530"
+ assembly="NHibernate.Test" xmlns="urn:nhibernate-mapping-2.2">
+ <class name="Product" abstract="true">
+ <id name="Id" type="Int32">
+ <generator class="hilo">
+ <param name="table">NextHighVaues</param>
+ <param name="column">NextHigh</param>
+ <param name="max_lo">100</param>
+ <param name="where">Entity = 'Product'</param>
+ </generator>
+ </id>
+ <discriminator />
+ <property name="Title" />
+ </class>
+ <class name="Customer">
+ <id name="Id" type="Int32">
+ <generator class="hilo">
+ <param name="table">NextHighVaues</param>
+ <param name="column">NextHigh</param>
+ <param name="max_lo">100</param>
+ <param name="where">Entity = 'Customer'</param>
+ </generator>
+ </id>
+ <property name="Name" />
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-21 14:11:22 UTC (rev 5494)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-21 15:06:30 UTC (rev 5495)
@@ -646,6 +646,8 @@
<Compile Include="NHSpecificTest\NH2484\Model.cs" />
<Compile Include="NHSpecificTest\NH2507\Animal.cs" />
<Compile Include="NHSpecificTest\NH2507\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH2530\Domain.cs" />
+ <Compile Include="NHSpecificTest\NH2530\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2565\Domain.cs" />
<Compile Include="NHSpecificTest\NH2565\Fixture.cs" />
<Compile Include="NHSpecificTest\Properties\CompositePropertyRefTest.cs" />
@@ -2470,6 +2472,7 @@
<EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" />
</ItemGroup>
<ItemGroup>
+ <EmbeddedResource Include="NHSpecificTest\NH2530\Mappings.hbm.xml" />
<EmbeddedResource Include="DynamicProxyTests\InterfaceProxySerializationTests\ProxyImpl.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2565\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\AccessAndCorrectPropertyName\DogMapping.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|