Hibernate has this as xml config, why don't we have it as config, instead of ISchemaXXXX
On Fri, Nov 14, 2008 at 12:16 PM, Steve Wagner <[EMAIL PROTECTED]> wrote: > > So now it is in jira :-) > > http://jira.nhibernate.org/browse/NH-1568 > > Dose you have an issue for the SchemaVerify? Should i create one? > > Fabio Maulo schrieb: > > 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 > >> > >> > > > > > -- Tuna Toksöz Typos included to enhance the readers attention!
