I updated to the lastest trunk and that fixed the problem so please
ignore my previous post!

/Andreas

On 20 Aug, 10:46, Andreas Öhlund <[email protected]> wrote:
> I'm having exactly the same problem after upgrading to 1.0 RC. It
> worked with a 1 month old version.
>
> I have confirmed that my convention is called:
>
>  public class IdShouldBeAssignedConvention :IIdConvention
>
>     {
>         public void Apply(IIdentityInstance instance)
>         {
>             if (typeof(ISagaEntity).IsAssignableFrom
> (instance.EntityType))
>             {
>                 instance.GeneratedBy.Assigned();
>             }
>             else
>                 instance.GeneratedBy.GuidComb();
>         }
>     }
>
> No matter what I set the generator to it remains set to
> NHibernate.Id.IdentityGenerator. It seems to be the if (!
> mapping.IsSpecified(x => x.Class)) thingy that is causing this!?
>
> /Andreas
>
> On 18 Aug, 07:24, Steve Wagner <[email protected]> wrote:
>
>
>
> > Seems to work now. Thanks James.
>
> > James Gregory schrieb:
>
> > > Guys, I've committed a fix for this in master; along with the fix I've 
> > > also
> > > made the automapper predict the generator like the fluent mappings do, 
> > > can't
> > > believe it didn't do this to begin with :(
>
> > > On Mon, Aug 17, 2009 at 7:47 PM, Steve Wagner <[email protected]> wrote:
>
> > >> Hi James, it seems this is a bug in current git master. I stumbled upon
> > >> the same problem. The IdConvention is called but the call to
>
> > >> instance.GeneratedBy.GuidComb()
>
> > >> fails because, inside of this function in GeneratorInstance.cs this if
>
> > >> if (!mapping.IsSpecified(x => x.Class))
>
> > >> returns false and so is the builder never called. But i dose not found
> > >> why this is already specified.
>
> > >> My mapping looks like this:
>
> > >>            return AutoMap.AssemblyOf<User>()
> > >>                .Where( t => t.BaseType != null && IsDomainEntityBase(
> > >> t.BaseType ) )
> > >>                .Conventions.Add<GuidCombIdConvention>()
> > >>                .Conventions.Add<UseDynamicInsertAndUpdateConvention>()
> > >>                .Conventions.Add<IntEnumerationPropertyConvention>()
> > >>                .Setup( c =>
> > >>                {
> > >>                    c.FindIdentity = ( info => info.Name == "Id" );
> > >>                } );
>
> > >> and the convention looks like this:
>
> > >>    public class GuidCombIdConvention :IIdConvention
> > >>    {
> > >>        /// <summary>
> > >>        /// Applies the specified target.
> > >>        /// </summary>
> > >>        /// <param name="target">The target.</param>
> > >>        public void Apply( IIdentityInstance target )
> > >>        {
> > >>            target.GeneratedBy.GuidComb();
> > >>        }
> > >>    }
>
> > >> Steve
>
> > >> James Gregory schrieb:
> > >>> That definitely looks like a bug. Ids of Guid should always default to
> > >>> GuidComb, so something weird's happening there anyway, but you should be
> > >>> able to override it anyway! Filed, I'll look at it tonight.
>
> > >>> On Mon, Aug 17, 2009 at 1:11 PM, [email protected] <
> > >>> [email protected]> wrote:
>
> > >>>> Hello,
>
> > >>>> lets start with some code, here is my setup:
>
> > >>>> mappingConfiguration.AutoMappings.Add(AutoMap
> > >>>>                                        .AssemblyOf<User>()
>
> > >>>>        .UseOverridesFromAssemblyOf<User>()
>
> > >>>>        .Conventions.AddFromAssemblyOf<User>()
> > >>>>                                        .Where(t => typeof
> > >>>> (IEntity).IsAssignableFrom(t) &&
> > >>>>                                                    t.IsClass)
>
> > >>>> here is my Id Convention
>
> > >>>> public class IdConvention :IIdConvention, IIdConventionAcceptance
> > >>>> {
> > >>>>        public void Accept(IAcceptanceCriteria<IIdentityInspector>
> > >> criteria)
> > >>>>        {
> > >>>>                criteria.Expect(c => c.Property.PropertyType ==
> > >> typeof(Guid)
> > >>>> &&
> > >>>> c.Property.Name.ToUpper() == "ID");
> > >>>>        }
>
> > >>>>        public void Apply(IIdentityInstance instance)
> > >>>>        {
> > >>>>                instance.GeneratedBy.GuidComb();
> > >>>>        }
> > >>>> }
>
> > >>>> with or without the conventions in place, my Id mappings end up like
> > >>>> this:
>
> > >>>> <id name="Id" type="System.Guid, mscorlib, Version=2.0.0.0,
> > >>>> Culture=neutral, PublicKeyToken=b77a5c561934e089">
> > >>>>        <column name="Id" />
> > >>>>        <generator class="identity" />
> > >>>> </id>
>
> > >>>> With the convention in place, the Apply() method is run on my
> > >>>> entities, but the xml remains the same :(
>
> > >>>> to further debug, i tried this:
>
> > >>>> public void Apply(IIdentityInstance instance)
> > >>>> {
> > >>>>        instance.GeneratedBy.GuidComb();
> > >>>>        instance.Column("wibble");
> > >>>> }
>
> > >>>> which ends up as:
>
> > >>>> <id name="Id" type="System.Guid, mscorlib, Version=2.0.0.0,
> > >>>> Culture=neutral, PublicKeyToken=b77a5c561934e089">
> > >>>>        <column name="wibble" />
> > >>>>        <generator class="identity" />
> > >>>> </id>
>
> > >>>> Bug? or am i being daft (highly probable)
>
> > >>>> Andrew- Dölj citerad text -
>
> > - Visa citerad text -- Dölj citerad text -
>
> - Visa citerad text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to