From: <fab...@us...> - 2009-10-15 12:44:11
|
Revision: 4754 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4754&view=rev Author: fabiomaulo Date: 2009-10-15 12:43:59 +0000 (Thu, 15 Oct 2009) Log Message: ----------- Fix NH-1895 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-14 22:03:56 UTC (rev 4753) +++ branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-15 12:43:59 UTC (rev 4754) @@ -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: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs 2009-10-15 12:43:59 UTC (rev 4754) @@ -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; } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml 2009-10-15 12:43:59 UTC (rev 4754) @@ -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> \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs 2009-10-15 12:43:59 UTC (rev 4754) @@ -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(); + } + } + } +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 22:03:56 UTC (rev 4753) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-15 12:43:59 UTC (rev 4754) @@ -368,6 +368,8 @@ <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> <Compile Include="NHSpecificTest\NH1025\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1025\Model.cs" /> + <Compile Include="NHSpecificTest\NH1895\DomainClasses.cs" /> + <Compile Include="NHSpecificTest\NH1895\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1905\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1905\Model.cs" /> <Compile Include="NHSpecificTest\NH1908ThreadSafety\Fixture.cs" /> @@ -2005,6 +2007,7 @@ <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1895\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1025\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1985\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1990\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |