|
From: <fab...@us...> - 2009-10-15 12:53:52
|
Revision: 4755
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4755&view=rev
Author: fabiomaulo
Date: 2009-10-15 12:53:45 +0000 (Thu, 15 Oct 2009)
Log Message:
-----------
Merge r4754 (fix NH-1895)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs
Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-15 12:43:59 UTC (rev 4754)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-15 12:53:45 UTC (rev 4755)
@@ -140,12 +140,16 @@
protected virtual void DeleteTransientEntity(IEventSource session, object entity, bool cascadeDeleteEnabled, IEntityPersister persister, ISet transientEntities)
{
log.Info("handling transient entity in delete processing");
- if (transientEntities.Contains(entity))
+ // NH different impl : NH-1895
+ if(transientEntities == null)
{
+ transientEntities = new HashedSet();
+ }
+ if (!transientEntities.Add(entity))
+ {
log.Debug("already handled transient entity; skipping");
return;
}
- transientEntities.Add(entity);
CascadeBeforeDelete(session, persister, entity, null, transientEntities);
CascadeAfterDelete(session, persister, entity, transientEntities);
}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs 2009-10-15 12:53:45 UTC (rev 4755)
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+
+namespace NHibernate.Test.NHSpecificTest.NH1895
+{
+ public class Order
+ {
+ public Order()
+ {
+ Details = new List<Detail>();
+ }
+
+ public Guid Id { get; set; }
+ public string Name { get; set; }
+ public IList<Detail> Details { get; set; }
+ }
+
+ public class Detail
+ {
+ public Guid Id { get; set; }
+ public string Name { get; set; }
+ public Order Parent { get; set; }
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml 2009-10-15 12:53:45 UTC (rev 4755)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH1895"
+ default-lazy="false">
+ <class name="Order" table="[Order]">
+ <id name="Id" type="guid" column="O_Id">
+ <generator class="assigned" />
+ </id>
+ <property name="Name" type="string" column="O_Name" />
+ <bag name="Details" inverse="true" cascade="delete-orphan" lazy="false" >
+ <key column="D_OrderId" />
+ <one-to-many class="Detail" />
+ </bag>
+ </class>
+ <class name="Detail" table="Detail">
+ <id name="Id" type="guid" column="D_Id">
+ <generator class="assigned" />
+ </id>
+ <property name="Name" type="string" column="D_Name" />
+ <many-to-one name="Parent" column="D_OrderId" not-null="true" class="Order" />
+ </class>
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs 2009-10-15 12:53:45 UTC (rev 4755)
@@ -0,0 +1,30 @@
+using System;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH1895
+{
+ [TestFixture]
+ public class SampleTest : BugTestCase
+ {
+ [Test]
+ public void SaveTest()
+ {
+ var o = new Order {Id = Guid.NewGuid(), Name = "Test Order"};
+ for (int i = 0; i < 5; i++)
+ {
+ var d = new Detail {Id = Guid.NewGuid(), Name = "Test Detail " + i, Parent = o};
+ o.Details.Add(d);
+ }
+ using (ISession session = OpenSession())
+ {
+ session.Save(o);
+ session.Flush();
+ }
+ using (ISession session = OpenSession())
+ {
+ session.Delete(o);
+ session.Flush();
+ }
+ }
+ }
+}
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-15 12:43:59 UTC (rev 4754)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-15 12:53:45 UTC (rev 4755)
@@ -395,6 +395,8 @@
<Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagFixture.cs" />
<Compile Include="NHSpecificTest\ElementsEnums\Something.cs" />
<Compile Include="NHSpecificTest\Futures\FutureQueryOverFixture.cs" />
+ <Compile Include="NHSpecificTest\NH1895\DomainClasses.cs" />
+ <Compile Include="NHSpecificTest\NH1895\SampleTest.cs" />
<Compile Include="NHSpecificTest\NH1922\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1922\Model.cs" />
<Compile Include="NHSpecificTest\NH1927\Fixture.cs" />
@@ -2040,6 +2042,7 @@
<EmbeddedResource Include="CfgTest\Loquacious\EntityToCache.hbm.xml" />
<EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH1895\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1985\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1990\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1959\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|