|
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.
|