From: <fab...@us...> - 2011-05-17 23:07:18
|
Revision: 5837 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5837&view=rev Author: fabiomaulo Date: 2011-05-17 23:07:11 +0000 (Tue, 17 May 2011) Log Message: ----------- No failing test for NH-1845 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Category.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Fixture.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Category.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Category.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Category.cs 2011-05-17 23:07:11 UTC (rev 5837) @@ -0,0 +1,53 @@ +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1845 +{ + public class Category + { + private readonly IList<Category> subcategories = new List<Category>(); + + public Category() : this("") {} + + public Category(string name) + { + Name = name; + } + + public virtual int Id { get; set; } + + public virtual string Name { get; set; } + + public virtual Category Parent { get; set; } + + public virtual IList<Category> Subcategories + { + get { return subcategories; } + } + + public virtual void AddSubcategory(Category subcategory) + { + subcategories.Add(subcategory); + subcategory.Parent = this; + } + + public override string ToString() + { + return Name; + } + + public override bool Equals(object obj) + { + var other = obj as Category; + if (other == null) + { + return false; + } + return other.Name == Name; + } + + public override int GetHashCode() + { + return Name.GetHashCode(); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Fixture.cs 2011-05-17 23:07:11 UTC (rev 5837) @@ -0,0 +1,62 @@ +using NHibernate.Cfg.MappingSchema; +using NHibernate.Mapping.ByCode; +using NUnit.Framework; +namespace NHibernate.Test.NHSpecificTest.NH1845 +{ + public class Fixture: TestCaseMappingByCode + { + + protected override HbmMapping GetMappings() + { + var mapper = new ModelMapper(); + mapper.Class<Category>(rc => + { + rc.Id(x=> x.Id, map=> map.Generator(Generators.Native)); + rc.Property(x=> x.Name); + rc.ManyToOne(x=> x.Parent, map=> map.Column("ParentId")); + rc.Bag(x => x.Subcategories, map => + { + map.Access(Accessor.NoSetter); + map.Key(km=> km.Column("ParentId")); + map.Cascade(Mapping.ByCode.Cascade.All.Include(Mapping.ByCode.Cascade.DeleteOrphans)); + }, rel => rel.OneToMany()); + }); + var mappings = mapper.CompileMappingForAllExplicitAddedEntities(); + return mappings; + } + + [Test] + public void LazyLoad_Initialize_AndEvict() + { + Category category = new Category("parent"); + category.AddSubcategory(new Category("child")); + SaveCategory(category); + + using (ISession session = OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + Category loaded = session.Load<Category>(category.Id); + NHibernateUtil.Initialize(loaded.Subcategories[0]); + session.Evict(loaded); + transaction.Commit(); + Assert.AreEqual("child", loaded.Subcategories[0].Name, "cannot access child"); + } + using (ISession session = OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + session.CreateQuery("delete from Category").ExecuteUpdate(); + transaction.Commit(); + } + } + + private void SaveCategory(Category category) + { + using (ISession session = OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + session.SaveOrUpdate(category); + transaction.Commit(); + } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-05-17 22:33:17 UTC (rev 5836) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-05-17 23:07:11 UTC (rev 5837) @@ -657,6 +657,8 @@ <Compile Include="NHSpecificTest\NH1836\Entity.cs" /> <Compile Include="NHSpecificTest\NH1836\EntityDTO.cs" /> <Compile Include="NHSpecificTest\NH1836\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1845\Category.cs" /> + <Compile Include="NHSpecificTest\NH1845\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1869\Entities.cs" /> <Compile Include="NHSpecificTest\NH1869\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1925\Fixture.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |