where ? I didn't see it.

2008/11/14 Tuna Toksöz <[EMAIL PROTECTED]>

> I am saying that in Hibernate, they have schema-xxxx="verify/update/create"
> kind of attribute which puts some default behavior.
>
> On Fri, Nov 14, 2008 at 12:35 PM, Steve Wagner <[EMAIL PROTECTED]> wrote:
>
>>
>> ?
>>
>> Tuna Toksöz schrieb:
>> > 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!
>



-- 
Fabio Maulo

Reply via email to