I've just pushed Paul's changes up, so his fix should now be available. On Sun, Mar 7, 2010 at 5:58 AM, Paul Batum <paul.ba...@gmail.com> wrote:
> Good timing, someone posted a similar issue with collection type just > recently: > > http://support.fluentnhibernate.org/discussions/help/20-preventing-mapping-output-for-custom-collection-type > > The change won't be available in the trunk until James pulls my changes > through but hopefully that'll happen in the next day or two. > > > On Fri, Mar 5, 2010 at 9:38 PM, Gabriel Schenker <gnschen...@gmail.com>wrote: > >> we are currently converting our hbm files to fluent mappings to be >> more flexible and leverage the power of conventions as an example. >> During this exercise I encountered some "exotic" <bag> mappings. They >> look similar to this: >> >> <class name="...Field, AssemblyName> >> ... >> <bag name="Options" access="SomeNamespace.GenericAccessor >> +CamelCase, AssemblyName" >> generic="true" inverse="true" cascade="all-delete-orphan" >> lazy="true"> >> <key column="PARENT_FIELD_ID" /> >> <one-to-many class="SomeOtherNamespace.Option, AssemblyName"/> >> </bag> >> ... >> </class> >> >> and the entity: >> >> public class Field : ... >> { >> ... >> private VersionList<Option> options; >> .... >> } >> >> Here the VersionList<T> is kind of a wrapper around an inner list of >> type IList<T>. >> The GenericAccessor is responsible to map to this 'innerList'. The >> mapping when using the hbm file works like a charm. >> >> I tried to translate this to >> >> HasMany(x => x.Options) >> .Access.Using("SomeNamespace.GenericAccessor >> +CamelCase, AssemblyName") >> .KeyColumn("PARENT_FIELD_ID") >> .Generic() >> .Inverse() >> .Cascade.AllDeleteOrphan() >> .LazyLoad(); >> >> the problem is now that the above fluent mapping translates into a bag >> that contains a 'collection-type' attribute which then causes >> problems. A mapping exception is thrown. To work correctly this >> attribute must NOT be present. >> >> To solve this I did the following HACK(!, but it works): I modified >> the Fluent NHibernate source such as that the HasManyPart contains a >> member NoCollectionType() which removes any entry from the attributes >> store; thus when creating the xml mapping the attribute is not >> written. I know this is a terrible hack but I did not find any other >> solution. >> >> what would be a better solution? (maybe I should implement an >> IUserCollectionType but there is very little info around about how to >> correctly do this and it is even outdated or contradicting info...) >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Fluent NHibernate" group. >> To post to this group, send email to fluent-nhibern...@googlegroups.com. >> To unsubscribe from this group, send email to >> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >> . >> For more options, visit this group at >> http://groups.google.com/group/fluent-nhibernate?hl=en. >> >> > -- > You received this message because you are subscribed to the Google Groups > "Fluent NHibernate" group. > To post to this group, send email to fluent-nhibern...@googlegroups.com. > To unsubscribe from this group, send email to > fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/fluent-nhibernate?hl=en. > -- You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to fluent-nhibern...@googlegroups.com. To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en.