|
From: <fab...@us...> - 2009-06-03 04:22:52
|
Revision: 4403
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4403&view=rev
Author: fabiomaulo
Date: 2009-06-03 04:22:51 +0000 (Wed, 03 Jun 2009)
Log Message:
-----------
Example of tree
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/DomainClass.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/SampleTest.cs
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/DomainClass.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/DomainClass.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/DomainClass.cs 2009-06-03 04:22:51 UTC (rev 4403)
@@ -0,0 +1,50 @@
+using System.Collections.Generic;
+
+namespace NHibernate.Test.NHSpecificTest.NH1531
+{
+ public class Parent
+ {
+ private readonly IList<Child> _children = new List<Child>();
+
+ public int Id { get; set; }
+
+ public IList<Child> Children
+ {
+ get { return _children; }
+ }
+
+ public void AddNewChild()
+ {
+ var c = new Child {Name = "New Child", Parent = this};
+ _children.Add(c);
+ }
+
+ public void DetachAllChildren()
+ {
+ foreach (var c in _children)
+ {
+ c.Parent = null;
+ }
+ _children.Clear();
+ }
+
+ public void AttachNewChild(Child c)
+ {
+ if (c.Parent != null)
+ {
+ c.Parent.Children.Remove(c);
+ }
+ c.Parent = this;
+ _children.Add(c);
+ }
+ }
+
+ public class Child
+ {
+ public int Id { get; set; }
+
+ public string Name { get; set; }
+
+ public Parent Parent { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/Mappings.hbm.xml 2009-06-03 04:22:51 UTC (rev 4403)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH1531"
+ default-lazy="false">
+
+ <class name="Parent">
+ <id name="Id">
+ <generator class="assigned" />
+ </id>
+ <bag name="Children" lazy="true" inverse="true" cascade="all" access="field.camelcase-underscore" >
+ <key column="ParentID" />
+ <one-to-many class="Child"/>
+ </bag>
+ </class>
+
+
+ <class name="Child">
+ <id name="Id">
+ <generator class="assigned" />
+ </id>
+ <property name="Name" column="Name" />
+ <many-to-one name="Parent" column="ParentID" />
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/SampleTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/SampleTest.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1531/SampleTest.cs 2009-06-03 04:22:51 UTC (rev 4403)
@@ -0,0 +1,80 @@
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH1531
+{
+ // This test is only an Example to show the wrong mapping in the original issue.
+
+ [TestFixture]
+ public class SampleTest : BugTestCase
+ {
+ private void FillDb()
+ {
+ using (ISession session = OpenSession())
+ {
+ var entity = new Parent {Id = 1};
+ entity.AddNewChild();
+ session.Save(entity);
+
+ var entity2 = new Parent {Id = 2};
+ session.Save(entity2);
+
+ session.Flush();
+ }
+ }
+
+ private void CleanDb()
+ {
+ using (ISession session = OpenSession())
+ {
+ session.Delete("from Parent");
+ session.Flush();
+ }
+ }
+
+ [Test]
+ public void ReparentingShouldNotFail()
+ {
+ FillDb();
+ using (ISession session = OpenSession())
+ {
+ var parent1 = session.Get<Parent>(1);
+ var parent2 = session.Get<Parent>(2);
+
+ Assert.AreEqual(1, parent1.Children.Count);
+ Assert.AreEqual(0, parent2.Children.Count);
+
+ Child p1Child = parent1.Children[0];
+
+ Assert.IsNotNull(p1Child);
+
+ parent1.DetachAllChildren();
+ parent2.AttachNewChild(p1Child);
+
+ session.SaveOrUpdate(parent1);
+ session.SaveOrUpdate(parent2);
+
+ // NHibernate.ObjectDeletedException :
+ // deleted object would be re-saved by cascade (remove deleted object from associations)[NHibernate.Test.NHSpecificTest.NH1531.Child#0]
+
+ session.Flush();
+ }
+
+ using (ISession session = OpenSession())
+ {
+ // should exist only one child
+ var l = session.CreateQuery("from Child").List();
+ Assert.That(l.Count, Is.EqualTo(1));
+ }
+ CleanDb();
+ }
+
+ [Test]
+ public void DeleteParentDeleteChildInCascade()
+ {
+ FillDb();
+ CleanDb();
+
+ // The TestCase is checking the empty db
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-02 23:09:13 UTC (rev 4402)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-03 04:22:51 UTC (rev 4403)
@@ -364,6 +364,8 @@
<Compile Include="NHSpecificTest\NH1343\Product.cs" />
<Compile Include="NHSpecificTest\NH1343\ProductFixture.cs" />
<Compile Include="NHSpecificTest\NH1388\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH1531\DomainClass.cs" />
+ <Compile Include="NHSpecificTest\NH1531\SampleTest.cs" />
<Compile Include="NHSpecificTest\NH1553\MsSQL\Person.cs" />
<Compile Include="NHSpecificTest\NH1553\MsSQL\SnapshotIsolationUpdateConflictTest.cs" />
<Compile Include="NHSpecificTest\NH1553\MsSQL\SQLUpdateConflictToStaleStateExceptionConverter.cs" />
@@ -1855,6 +1857,7 @@
<EmbeddedResource Include="CacheTest\EntityWithFilters.xml" />
<EmbeddedResource Include="Classic\EntityWithLifecycle.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH1531\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1757\Mappings.hbm.xml" />
<EmbeddedResource Include="Events\PostEvents\SimpleEntity.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1789\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|