From: <ric...@us...> - 2010-01-26 23:28:26
|
Revision: 4932 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4932&view=rev Author: ricbrown Date: 2010-01-26 23:28:18 +0000 (Tue, 26 Jan 2010) Log Message: ----------- Fix NH-2020 (ISQLExceptionConverter does not get called if batch size enabled) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/AdoNet/SqlClientSqlCommandSet.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Model.cs Modified: trunk/nhibernate/src/NHibernate/AdoNet/SqlClientSqlCommandSet.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/SqlClientSqlCommandSet.cs 2010-01-26 09:25:25 UTC (rev 4931) +++ trunk/nhibernate/src/NHibernate/AdoNet/SqlClientSqlCommandSet.cs 2010-01-26 23:28:18 UTC (rev 4932) @@ -111,16 +111,10 @@ if (Connection == null) throw new ArgumentNullException( "Connection was not set! You must set the connection property before calling ExecuteNonQuery()"); - try - { - if (CountOfCommands == 0) - return 0; - return doExecuteNonQuery(); - } - catch (Exception e) - { - throw new HibernateException("An exception occurred when executing batch queries", e); - } + + if (CountOfCommands == 0) + return 0; + return doExecuteNonQuery(); } public SqlConnection Connection Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Fixture.cs 2010-01-26 23:28:18 UTC (rev 4932) @@ -0,0 +1,75 @@ +using System; + +using NUnit.Framework; + +using NHibernate.Dialect; +using NHibernate.Exceptions; +using NHibernate.Test.ExceptionsTest; + +namespace NHibernate.Test.NHSpecificTest.NH2020 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void Configure(Cfg.Configuration configuration) + { + configuration.SetProperty(Cfg.Environment.BatchSize, "1"); + + configuration.SetProperty( Cfg.Environment.SqlExceptionConverter, + typeof (MSSQLExceptionConverterExample).AssemblyQualifiedName); + } + + protected override bool AppliesTo(NHibernate.Dialect.Dialect dialect) + { + return dialect is MsSql2000Dialect; + } + + protected override void OnTearDown() + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete("from One"); + s.Delete("from Many"); + tx.Commit(); + } + } + + [Test] + public void ISQLExceptionConverter_gets_called_if_batch_size_enabled() + { + long oneId; + + using(var s = OpenSession()) + using(var tx = s.BeginTransaction()) + { + var one = new One(); + s.Save(one); + + var many = new Many { One = one }; + s.Save(many); + + tx.Commit(); + + oneId = one.Id; + } + + using(ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + var one = s.Load<One>(oneId); + + try + { + s.Delete(one); + tx.Commit(); + Assert.Fail("DELETE should have failed"); + } + catch (Exception ex) + { + Assert.IsInstanceOf<ConstraintViolationException>(ex); + } + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Mappings.hbm.xml 2010-01-26 23:28:18 UTC (rev 4932) @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH2020"> + + <class name="One"> + <id name="Id"> + <generator class="native"/> + </id> + </class> + + <class name="Many"> + <id name="Id"> + <generator class="native"/> + </id> + <many-to-one name="One" /> + </class> + +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Model.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Model.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2020/Model.cs 2010-01-26 23:28:18 UTC (rev 4932) @@ -0,0 +1,13 @@ +namespace NHibernate.Test.NHSpecificTest.NH2020 +{ + public class One + { + public virtual long Id { get; set; } + } + + public class Many + { + public virtual long Id { get; set; } + public virtual One One { get; set; } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-01-26 09:25:25 UTC (rev 4931) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-01-26 23:28:18 UTC (rev 4932) @@ -667,6 +667,8 @@ <Compile Include="NHSpecificTest\NH1989\Model.cs" /> <Compile Include="NHSpecificTest\NH2009\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2009\Model.cs" /> + <Compile Include="NHSpecificTest\NH2020\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2020\Model.cs" /> <Compile Include="NHSpecificTest\NH2044\DomainClass.cs" /> <Compile Include="NHSpecificTest\NH2044\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH2055\AuxType.cs" /> @@ -2115,6 +2117,7 @@ <EmbeddedResource Include="CfgTest\Loquacious\EntityToCache.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH2020\Mappings.hbm.xml" /> <EmbeddedResource Include="GhostProperty\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2065\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2009\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |