Not yet, but since you think it might be a good idea I'll try to... Tom
On 8 mrt, 02:17, Paul Batum <paul.ba...@gmail.com> wrote: > Hi Tom, > > I only just got around to looking at your example. Your suggestion makes > sense. Have you attempted to make the necessary modifications to FNH to use > this new approach? > > Paul. > > On Tue, Feb 16, 2010 at 9:56 PM, Tom Janssens <d4sk...@gmail.com> wrote: > > Hi Paul, > > > Sorry for the late answer.Thank you for taking the time to reply. > > > AFAIK the current system only recalls the latest names for a > > component; since you only have the current propertyinfo available, > > So this would result in > > > - HomeStreet > > - HomeNr > > - City_Id > > - WorkStreet > > - WorkNr > > - City_Id > > > This is the resulting hbm file : > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default- > > access="property" auto-import="true" default-cascade="none" default- > > lazy="true"> > > <class xmlns="urn:nhibernate-mapping-2.2" > > name="FluentNhibExample.Model.Contact, FluentNhibExample, > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" > > table="`Contact`"> > > <id name="Id" type="System.Int32, mscorlib, Version=2.0.0.0, > > Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="Id" /> > > <generator class="identity" /> > > </id> > > <component name="Coordinate" insert="true" update="true" > > optimistic-lock="true"> > > <component name="Home" insert="true" update="true" optimistic- > > lock="true"> > > <property name="Street" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="HomeStreet" /> > > </property> > > <property name="Nr" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="HomeNr" /> > > </property> > > <many-to-one cascade="save-update" > > class="FluentNhibExample.Model.City, FluentNhibExample, > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="City"> > > <column name="City_id" /> > > </many-to-one> > > </component> > > <component name="Work" insert="true" update="true" optimistic- > > lock="true"> > > <property name="Street" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="WorkStreet" /> > > </property> > > <property name="Nr" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="WorkNr" /> > > </property> > > <many-to-one cascade="save-update" > > class="FluentNhibExample.Model.City, FluentNhibExample, > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="City"> > > <column name="City_id" /> > > </many-to-one> > > </component> > > </component> > > <property name="Name" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="Name" /> > > </property> > > </class> > > </hibernate-mapping> > > > I know this might be a stupid example, but when we add for example the > > following class as a component: > > public class EmailAddress > > { > > protected Regex MyRegex = new Regex(@"[a-za-z0-9._%...@[a-za- > > z0-9.-]+\.[A-Za-z]{2,4}"); > > private string val; > > > public string Value > > { > > get > > { > > return val; > > } > > set > > { > > if (val != null) > > { > > val = val.ToLowerInvariant(); > > if (!MyRegex.Match(value).Success) > > throw (new > > ArgumentOutOfRangeException("Invalid email address")); > > } > > val = value; > > } > > } > > } > > > and add it to the Address class: > > public class Address > > { > > public virtual string Street { get; set; } > > public virtual string Nr { get; set; } > > public virtual City City { get; set; } > > public virtual EmailAddress Email { get; set; } > > } > > > this results in the following mapping : > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default- > > access="property" auto-import="true" default-cascade="none" default- > > lazy="true"> > > <class xmlns="urn:nhibernate-mapping-2.2" > > name="FluentNhibExample.Model.Contact, FluentNhibExample, > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" > > table="`Contact`"> > > <id name="Id" type="System.Int32, mscorlib, Version=2.0.0.0, > > Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="Id" /> > > <generator class="identity" /> > > </id> > > <component name="Coordinate" insert="true" update="true" > > optimistic-lock="true"> > > <component name="Home" insert="true" update="true" optimistic- > > lock="true"> > > <component name="Email" insert="true" update="true" optimistic- > > lock="true"> > > <property name="Value" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="EmailValue" /> > > </property> > > </component> > > <property name="Street" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="HomeStreet" /> > > </property> > > <property name="Nr" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="HomeNr" /> > > </property> > > <many-to-one cascade="save-update" > > class="FluentNhibExample.Model.City, FluentNhibExample, > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="City"> > > <column name="City_id" /> > > </many-to-one> > > </component> > > <component name="Work" insert="true" update="true" optimistic- > > lock="true"> > > <component name="Email" insert="true" update="true" optimistic- > > lock="true"> > > <property name="Value" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="EmailValue" /> > > </property> > > </component> > > <property name="Street" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="WorkStreet" /> > > </property> > > <property name="Nr" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="WorkNr" /> > > </property> > > <many-to-one cascade="save-update" > > class="FluentNhibExample.Model.City, FluentNhibExample, > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="City"> > > <column name="City_id" /> > > </many-to-one> > > </component> > > </component> > > <property name="Name" type="System.String, mscorlib, > > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> > > <column name="Name" /> > > </property> > > </class> > > </hibernate-mapping> > > > As you can see, we have 2 columns named "EmailValue" here. This is > > what I mean with top-down naming : > > the name should be componentname.componentname.propertyname (i.e. > > HomeAddressEmailValue) IMHO. > > > Do you think this would be a good idea ? > > > The project is available here:http://gist.github.com/305454(it uses > > my own fluentnhibernate wrapper, but should be quite obvious) > > > Kind regards, > > > Tom > > > -- > > 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.