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