From: <jul...@us...> - 2011-02-11 14:44:39
|
Revision: 5379 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5379&view=rev Author: julian-maughan Date: 2011-02-11 14:44:33 +0000 (Fri, 11 Feb 2011) Log Message: ----------- Allow immutable objects to be deleted (ref. NH-1985) Modified Paths: -------------- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2011-02-10 15:25:32 UTC (rev 5378) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2011-02-11 14:44:33 UTC (rev 5379) @@ -90,12 +90,6 @@ version = entityEntry.Version; } - if (!persister.IsMutable) - { - throw new HibernateException("Attempted to delete an object of immutable class: " - + MessageHelper.InfoString(persister)); - } - if (InvokeDeleteLifecycle(source, entity, persister)) { return; Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs 2011-02-10 15:25:32 UTC (rev 5378) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs 2011-02-11 14:44:33 UTC (rev 5379) @@ -26,6 +26,7 @@ } [Test] + [Ignore("It is valid to be delete immutable entities")] public void AttemptToDeleteImmutableObjectShouldThrow() { using (ISession session = OpenSession()) @@ -62,5 +63,43 @@ } } } + + [Test] + public void AllowDeletionOfImmutableObject() + { + using (ISession session = OpenSession()) + { + Assert.DoesNotThrow(() => + { + using (ITransaction trans = session.BeginTransaction()) + { + var entity = session.Get<DomainClass>(1); + session.Delete(entity); + + trans.Commit(); + } + }); + } + + using (IConnectionProvider prov = ConnectionProviderFactory.NewConnectionProvider(cfg.Properties)) + { + IDbConnection conn = prov.GetConnection(); + + try + { + using (IDbCommand comm = conn.CreateCommand()) + { + comm.CommandText = "SELECT Id FROM DomainClass WHERE Id=1 AND Label='TEST record'"; + object result = comm.ExecuteScalar(); + + Assert.That(result == null, "Immutable object has not been deleted!"); + } + } + finally + { + prov.CloseConnection(conn); + } + } + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |