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!

Reply via email to