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