Jira :) It is important because we keep track of changes and list them when we are about the release.
On Thu, Nov 13, 2008 at 10:00 PM, Fabio Maulo <[EMAIL PROTECTED]> wrote: > Steve... My friend...Which is the right place for features request and > patch ? ;) > > 2008/11/13 Steve Wagner <[EMAIL PROTECTED]> > >> Hi Fabio, here is a patch which adds 3 tests where one is currently >> failing. Add the failing test i added a short description. >> >> Steve Wagner schrieb: >> > Ok i will try it. >> > >> > If both SchemaVerify and this are work, i think the following workflow >> > could prevent the ghosting. >> > >> > * I create a Test which runs SchemaVerify. >> > * SchemaVerify tells me that i could run into ghosting with the current >> > mapping. >> > * I change the mapping with the property >> > * SchemaVerify passes >> > >> > Fabio Maulo schrieb: >> >> 2008/11/13 Steve Wagner <[EMAIL PROTECTED]> >> >> >> >>> Wouldn't it here a good suggestion to add an per property option >> which >> >>> forces nhibernate to eval DBNull.Value==default(T) if it dose a dirty >> >>> check? >> >>> >> >> I think we have it working. In meta-data we having DefaultValue exactly >> for >> >> that.mmm wait ... sometimes you are talking about a new feature for >> existing >> >> data where you don't want to change the existing record even if you >> have a >> >> value in the entity and a null in the DB. >> >> Do you can create a failing test for the new feature ? >> >> >> > >> >> Index: nhibernate/src/NHibernate.Test/NHibernate.Test.csproj >> =================================================================== >> --- nhibernate/src/NHibernate.Test/NHibernate.Test.csproj (Revision >> 3887) >> +++ nhibernate/src/NHibernate.Test/NHibernate.Test.csproj >> (Arbeitskopie) >> @@ -375,6 +375,10 @@ >> <Compile Include="NHSpecificTest\CollectionFixture.cs" /> >> <Compile Include="NHSpecificTest\CriteriaFromHql\Fixture.cs" /> >> <Compile Include="NHSpecificTest\CriteriaFromHql\Person.cs" /> >> + <Compile Include="NHSpecificTest\Ghosting\Fixture.cs" /> >> + <Compile Include="NHSpecificTest\Ghosting\Person.cs" /> >> + <Compile Include="NHSpecificTest\Ghosting\PersonPreventGhost.cs" /> >> + <Compile Include="NHSpecificTest\Ghosting\PersonWithGhost.cs" /> >> <Compile Include="NHSpecificTest\NH1033\Animal.cs" /> >> <Compile Include="NHSpecificTest\NH1033\Fixture.cs" /> >> <Compile Include="NHSpecificTest\NH1033\Reptile.cs" /> >> @@ -1515,6 +1519,7 @@ >> <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> >> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> >> <Content Include="DynamicEntity\package.html" /> >> + <EmbeddedResource Include="NHSpecificTest\Ghosting\Mappings.hbm.xml" >> /> >> <EmbeddedResource Include="NHSpecificTest\NH1478\Mappings.hbm.xml" /> >> <EmbeddedResource Include="NHSpecificTest\NH1447\Mappings.hbm.xml" /> >> <EmbeddedResource Include="TypesTest\EnumCharClass.hbm.xml" /> >> >> Eigenschaftsänderungen: >> nhibernate\src\NHibernate.Test\NHSpecificTest\Ghosting >> ___________________________________________________________________ >> Hinzugefügt: bugtraq:url >> + http://jira.nhibernate.org/browse/%BUGID% >> Hinzugefügt: bugtraq:logregex >> + NH-\d+ >> >> >> Index: nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/Fixture.cs >> =================================================================== >> --- nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/Fixture.cs >> (Revision 0) >> +++ nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/Fixture.cs >> (Revision 0) >> @@ -0,0 +1,88 @@ >> +using NUnit.Framework; >> + >> +namespace NHibernate.Test.NHSpecificTest.Ghosting >> +{ >> + [TestFixture] >> + public class Fixture : BugTestCase >> + { >> + protected override void OnSetUp() >> + { >> + Person person = new Person(); >> + person.Number = null; >> + >> + using (ISession session = OpenSession()) >> + using (ITransaction tx = session.BeginTransaction()) >> + { >> + session.Save( person ); >> + >> + tx.Commit(); >> + } >> + } >> + >> + protected override void OnTearDown() >> + { >> + using (ISession session = OpenSession()) >> + using (ITransaction tx = session.BeginTransaction()) >> + { >> + session.Delete( "from Person" ); >> + session.Delete( "from PersonWithGhost" ); >> + tx.Commit(); >> + } >> + } >> + >> + [Test] >> + public void PersonWasPersistedCorrectlyAndGeneratesNoGhost() >> + { >> + using (ISession session = OpenSession()) >> + using (ITransaction tx = session.BeginTransaction()) >> + { >> + var person = session.CreateCriteria( typeof( Person ) ) >> + .SetMaxResults( 1 ) >> + .UniqueResult<Person>(); >> + >> + Assert.IsNotNull( person ); >> + Assert.IsNull( person.Number ); >> + Assert.IsFalse( session.IsDirty() ); >> + } >> + } >> + >> + [Test] >> + public void PersonGeneratesAGhost() >> + { >> + using( ISession session = OpenSession() ) >> + using( ITransaction tx = session.BeginTransaction() ) >> + { >> + var person = session.CreateCriteria( typeof( >> PersonWithGhost ) ) >> + .SetMaxResults( 1 ) >> + .UniqueResult<PersonWithGhost>(); >> + >> + Assert.IsNotNull( person ); >> + Assert.AreEqual( default( int ), person.Number ); >> + Assert.IsTrue( session.IsDirty() ); >> + } >> + } >> + >> + [Test] >> + public void OptionToPreventTheGenerationOfAGhost() >> + { >> + using( ISession session = OpenSession() ) >> + using( ITransaction tx = session.BeginTransaction() ) >> + { >> + var person = session.CreateCriteria( typeof( >> PersonPreventGhost ) ) >> + .SetMaxResults( 1 ) >> + .UniqueResult<PersonPreventGhost>(); >> + >> + Assert.IsNotNull( person ); >> + Assert.AreEqual( default( int ), person.Number ); >> + Assert.IsFalse( session.IsDirty() ); >> + >> + /// @Fabio: >> + /// In this object the Number property should have set >> + /// an special flag which forces NHibernate to >> + /// evaluates default(int) == DBNull.Value >> + /// when it dose the IsDirty check of the Number >> + /// property. >> + } >> + } >> + } >> +} >> \ No newline at end of file >> Index: >> nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/Mappings.hbm.xml >> =================================================================== >> --- >> nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/Mappings.hbm.xml >> (Revision 0) >> +++ >> nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/Mappings.hbm.xml >> (Revision 0) >> @@ -0,0 +1,24 @@ >> +<?xml version="1.0" encoding="utf-8" ?> >> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >> + >> namespace="NHibernate.Test.NHSpecificTest.Ghosting" >> + assembly="NHibernate.Test"> >> + >> + <class name="Person"> >> + <id name="Id"> >> + <generator class="native" /> >> + </id> >> + <property name="Number" /> >> + </class> >> + <class name="PersonWithGhost" table="Person"> >> + <id name="Id"> >> + <generator class="native" /> >> + </id> >> + <property name="Number" /> >> + </class> >> + <class name="PersonPreventGhost" table="Person"> >> + <id name="Id"> >> + <generator class="native" /> >> + </id> >> + <property name="Number" /> >> + </class> >> +</hibernate-mapping> >> Index: nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/Person.cs >> =================================================================== >> --- nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/Person.cs >> (Revision 0) >> +++ nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/Person.cs >> (Revision 0) >> @@ -0,0 +1,22 @@ >> +using System.Collections.Generic; >> + >> +namespace NHibernate.Test.NHSpecificTest.Ghosting >> +{ >> + public class Person >> + { >> + private int id; >> + private int? _number; >> + >> + public virtual int Id >> + { >> + get { return id; } >> + set { id = value; } >> + } >> + >> + public virtual int? Number >> + { >> + get { return _number; } >> + set{ _number = value; } >> + } >> + } >> +} >> \ No newline at end of file >> Index: >> nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/PersonPreventGhost.cs >> =================================================================== >> --- >> nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/PersonPreventGhost.cs >> (Revision 0) >> +++ >> nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/PersonPreventGhost.cs >> (Revision 0) >> @@ -0,0 +1,20 @@ >> +namespace NHibernate.Test.NHSpecificTest.Ghosting >> +{ >> + public class PersonPreventGhost >> + { >> + private int id; >> + private int _number; >> + >> + public virtual int Id >> + { >> + get { return id; } >> + set { id = value; } >> + } >> + >> + public virtual int Number >> + { >> + get { return _number; } >> + set { _number = value; } >> + } >> + } >> +} >> \ No newline at end of file >> Index: >> nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/PersonWithGhost.cs >> =================================================================== >> --- >> nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/PersonWithGhost.cs >> (Revision 0) >> +++ >> nhibernate/src/NHibernate.Test/NHSpecificTest/Ghosting/PersonWithGhost.cs >> (Revision 0) >> @@ -0,0 +1,20 @@ >> +namespace NHibernate.Test.NHSpecificTest.Ghosting >> +{ >> + public class PersonWithGhost >> + { >> + private int id; >> + private int _number; >> + >> + public virtual int Id >> + { >> + get { return id; } >> + set { id = value; } >> + } >> + >> + public virtual int Number >> + { >> + get { return _number; } >> + set { _number = value; } >> + } >> + } >> +} >> \ No newline at end of file >> >> > > > -- > Fabio Maulo > -- Tuna Toksöz Typos included to enhance the readers attention!
