I agree with John, and will like to add that I don't see the point of a tool generating code for another tool that generates code. Is like if the FNH team choose to generate LLLBlGen Pro dsl. I hope this will be taken as a constructive comment.
XML in his both representations as raw XML or as HBM* classes is the lowest common denominator. See? I read Fabio's blog. 2010/8/12 John Davidson <[email protected]> > Frans, > > Fleunt NHibernate is almost a non-starter as there is no documentation on > how to use it with VB.Net, if it would even work. XML is a lowest common > denominator type solution and should always be retained. Higher level > solutions are great, but not always accessible > > John Davidson > > > On Thu, Aug 12, 2010 at 12:51 PM, Frans Bouma <[email protected]> wrote: > >> > Same XML please. >> >> that's trivial if I define the model like you did in code. >> >> > btw Frans, you product is a code generator I can't skip 42 slides >> because >> in >> > the early slides you are describing the domain relations and relational >> > mapping... >> >> no, not the mapping, just the entities and the relationships. I >> don't define any mapping in that video by hand, nor the DDL SQL. Mappings >> + >> table stuff is created by 1 mouseclick using settings to configure what >> will >> I end up with. >> >> > would be the same than explain that you have a whole application running >> > starting from "press F5". >> >> you wrote classes to start with, I didn't. The classes contain the >> info used by confORM, I created a model, which produces classes + mappings >> + >> DDL SQL, using very few keystrokes btw. >> >> But, like I said, let's not end up in a pissing contest :) Being in >> a rush to get things done a.s.a.p. is never going to end well, so that's >> not >> what people should focus on. It's about maintainability etc., and confORM >> could be a good choice for that as well, I don't want to have that debate, >> as it's besides the point. The point is: with all the options, is yet >> another option from the team around NH really helping, or just confusing >> users? >> >> Also, is it or isn't it the future _preferred_ way of doing NH >> mappings from the point of view of the NH team? (so others have to adapt >> to >> confORM, and if they want support xml as well, but that's really not the >> way >> to go) >> >> FB >> >> >> > >> > >> > On Thu, Aug 12, 2010 at 1:11 PM, Frans Bouma <[email protected]> wrote: >> > >> > >> > >> > > Now that you saw something more about ConfORM I will happy if >> you >> > can >> > answer >> > > my annoying question. >> > > Can you show me the equivalent-mapping/procedure using what ever >> > you want >> > ? >> > >> > >> > (it's an old video of the alpha build, I'll soon make a >> new, >> > more >> > extensive one with quickmodel and NH. It's for our own framework, >> but >> > choosing NH is 2 clicks) >> > >> > >> > >> http://www.xs4all.nl/~perseus/LLBLGenPro/Videos/LLBLGenProv3.0_QuickM >> > odel.ht >> > ml >> > >> < >> http://www.xs4all.nl/~perseus/LLBLGenPro/Videos/LLBLGenProv3.0_QuickModel.h >> > t ml> >> > >> > skip to slide 42, press play >> > >> > I know, you start with code, I with the model, same thing. >> > >> > FB >> > >> > >> > > >> > > Thanks. >> > > >> > > >> > > On Thu, Aug 12, 2010 at 12:34 PM, Fabio Maulo >> > <[email protected]> >> > wrote: >> > > >> > > >> > > On Thu, Aug 12, 2010 at 11:43 AM, Tom Allard >> > <[email protected]> >> > > wrote: >> > > >> > > >> > > "Make everything as simple as possible, but not >> > simpler." >> > > -- Albert Einstein >> > > >> > > >> > > >> > > >> > > Sure. >> > > For that reason this ConfORM mapping >> > > >> > > >> > > var orm = new ObjectRelationalMapper(); >> > > >> > > orm.TablePerClass<Animal>(); >> > > >> > > >> > > orm.TablePerClass<User>(); >> > > orm.TablePerClass<StateProvince>(); >> > > orm.TablePerClassHierarchy<Zoo>(); >> > > >> > > >> > > >> > > orm.ManyToMany<Human, Human>(); >> > > orm.OneToOne<User, Human>(); >> > > >> > > >> > > >> > > orm.PoidStrategies.Add(new NativePoidPattern()); >> > > is equivalent to this XML mapping >> > > >> > > >> > > <hibernate-mapping >> > xmlns:xsi="http://www.w3.org/2001/XMLSchema- >> > > instance" >> > > >> > > >> > > >> xmlns:xsd="http://www.w3.org/2001/XMLSchema" >> > > >> > > >> > > namespace="ConfOrmExample.Domain" >> > > assembly="ConfOrmExample" >> > > >> > > >> > > xmlns="urn:nhibernate-mapping-2.2"> >> > > <class name="User"> >> > > >> > > >> > > <id name="Id" type="Int64"> >> > > >> > > >> > > <generator class="native" /> >> > > >> > > >> > > </id> >> > > <property name="UserName" /> >> > > >> > > >> > > <one-to-one name="Human" /> >> > > >> > > >> > > <list name="Permissions"> >> > > >> > > >> > > <key column="user_key" /> >> > > >> > > >> > > <list-index /> >> > > <element type="String" /> >> > > >> > > >> > > </list> >> > > </class> >> > > <class name="Animal"> >> > > >> > > >> > > <id name="Id" type="Int64"> >> > > >> > > >> > > <generator class="native" /> >> > > >> > > >> > > </id> >> > > <property name="BodyWeight" /> >> > > >> > > >> > > <set name="Offspring" inverse="true" >> > cascade="all,delete- >> > > orphan"> >> > > >> > > >> > > <key column="Mother" /> >> > > >> > > >> > > <one-to-many class="Animal" /> >> > > >> > > >> > > </set> >> > > <many-to-one name="Mother" cascade="all" /> >> > > >> > > >> > > <many-to-one name="Father" cascade="all" /> >> > > >> > > >> > > <property name="Description" /> >> > > >> > > >> > > <many-to-one name="Zoo" /> >> > > >> > > >> > > <property name="SerialNumber" /> >> > > >> > > >> > > </class> >> > > <class name="StateProvince"> >> > > >> > > >> > > <id name="Id" type="Int64"> >> > > >> > > >> > > <generator class="native" /> >> > > >> > > >> > > </id> >> > > <property name="Name" /> >> > > >> > > >> > > <property name="IsoCode" /> >> > > >> > > >> > > </class> >> > > <class name="Zoo"> >> > > >> > > >> > > <id name="Id" type="Int64"> >> > > >> > > >> > > <generator class="native" /> >> > > >> > > >> > > </id> >> > > <discriminator /> >> > > <property name="Name" /> >> > > >> > > >> > > <property name="Classification" /> >> > > >> > > >> > > <map name="Animals" inverse="true"> >> > > >> > > >> > > <key column="Zoo" /> >> > > >> > > >> > > <map-key type="String" /> >> > > >> > > >> > > <one-to-many class="Animal" /> >> > > >> > > >> > > </map> >> > > <map name="Mammals" inverse="true"> >> > > >> > > >> > > <key column="Zoo" /> >> > > >> > > >> > > <map-key type="String" /> >> > > >> > > >> > > <one-to-many class="Mammal" /> >> > > >> > > >> > > </map> >> > > <component class="Address" name="Address"> >> > > >> > > >> > > <property name="Street" /> >> > > >> > > >> > > <property name="City" /> >> > > >> > > >> > > <property name="PostalCode" /> >> > > >> > > >> > > <property name="Country" /> >> > > >> > > >> > > <many-to-one name="StateProvince" /> >> > > >> > > >> > > </component> >> > > </class> >> > > <joined-subclass name="Mammal" extends="Animal"> >> > > >> > > >> > > <key column="animal_key" /> >> > > >> > > >> > > <property name="Pregnant" /> >> > > >> > > >> > > <property name="Birthdate" /> >> > > >> > > >> > > </joined-subclass> >> > > <joined-subclass name="DomesticAnimal" extends="Mammal"> >> > > >> > > >> > > <key column="mammal_key" /> >> > > >> > > >> > > <many-to-one name="Owner" cascade="all" /> >> > > >> > > >> > > </joined-subclass> >> > > <joined-subclass name="Cat" extends="DomesticAnimal"> >> > > >> > > >> > > <key column="domesticanimal_key" /> >> > > >> > > >> > > </joined-subclass> >> > > <joined-subclass name="Dog" extends="DomesticAnimal"> >> > > >> > > >> > > <key column="domesticanimal_key" /> >> > > >> > > >> > > </joined-subclass> >> > > <joined-subclass name="Reptile" extends="Animal"> >> > > >> > > >> > > <key column="animal_key" /> >> > > >> > > >> > > <property name="BodyTemperature" /> >> > > >> > > >> > > </joined-subclass> >> > > <joined-subclass name="Lizard" extends="Reptile"> >> > > >> > > >> > > <key column="reptile_key" /> >> > > >> > > >> > > </joined-subclass> >> > > <subclass name="PettingZoo" extends="Zoo" /> >> > > >> > > >> > > <joined-subclass name="Human" extends="Mammal"> >> > > >> > > >> > > <key column="mammal_key" /> >> > > >> > > >> > > <component class="Name" name="Name"> >> > > >> > > >> > > <property name="First" /> >> > > >> > > >> > > <property name="Initial" /> >> > > >> > > >> > > <property name="Last" /> >> > > >> > > >> > > </component> >> > > <property name="NickName" /> >> > > >> > > >> > > <bag name="Friends" cascade="all,delete-orphan"> >> > > >> > > >> > > <key column="human_key" /> >> > > >> > > >> > > <many-to-many class="Human" /> >> > > >> > > >> > > </bag> >> > > <bag name="Pets" inverse="true" cascade="all,delete- >> > orphan"> >> > > >> > > >> > > <key column="Owner" /> >> > > >> > > >> > > <one-to-many class="DomesticAnimal" /> >> > > >> > > >> > > </bag> >> > > <map name="Family" cascade="all,delete-orphan"> >> > > >> > > >> > > <key column="human_key" /> >> > > >> > > >> > > <map-key type="String" /> >> > > >> > > >> > > <many-to-many class="Human" /> >> > > >> > > >> > > </map> >> > > <property name="Height" /> >> > > >> > > >> > > <property name="BigIntegerValue" /> >> > > >> > > >> > > <property name="BigDecimalValue" /> >> > > >> > > >> > > <property name="IntValue" /> >> > > >> > > >> > > <property name="FloatValue" /> >> > > >> > > >> > > <set name="NickNames"> >> > > >> > > <key column="human_key" /> >> > > >> > > >> > > <element type="String" /> >> > > >> > > >> > > </set> >> > > <map name="Addresses"> >> > > >> > > >> > > <key column="human_key" /> >> > > >> > > >> > > <map-key type="String" /> >> > > >> > > >> > > <composite-element class="Address"> >> > > >> > > >> > > <property name="Street" /> >> > > >> > > >> > > <property name="City" /> >> > > >> > > >> > > <property name="PostalCode" /> >> > > >> > > >> > > <property name="Country" /> >> > > >> > > >> > > <many-to-one name="StateProvince" /> >> > > >> > > >> > > </composite-element> >> > > </map> >> > > >> > > </joined-subclass> >> > > >> > > </hibernate-mapping> >> > > >> > > Who wrote the XML mapping ? >> > > >> > > -- >> > > Fabio Maulo >> > > >> > > >> > > >> > > >> > > >> > > >> > > -- >> > > Fabio Maulo >> > > >> > > >> > > >> > >> > > -- >> > >> > > You received this message because you are subscribed to the >> Google >> > Groups >> > > "nhusers" group. >> > > To post to this group, send email to [email protected]. >> > > To unsubscribe from this group, send email to >> > > >> > [email protected]<nhusers%[email protected]> >> > <mailto:nhusers%[email protected]<nhusers%[email protected]>> >> . >> > > For more options, visit this group at >> > > http://groups.google.com/group/nhusers?hl=en. >> > >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups "nhusers" group. >> > To post to this group, send email to [email protected]. >> > To unsubscribe from this group, send email to >> > [email protected]<nhusers%[email protected]> >> > <mailto:nhusers%[email protected]<nhusers%[email protected]>> >> . >> > For more options, visit this group at >> > http://groups.google.com/group/nhusers?hl=en. >> > >> > >> > >> > >> > >> > >> > -- >> > Fabio Maulo >> > >> > >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups >> > "nhusers" group. >> > To post to this group, send email to [email protected]. >> > To unsubscribe from this group, send email to >> > [email protected]<nhusers%[email protected]> >> . >> > For more options, visit this group at >> > http://groups.google.com/group/nhusers?hl=en. >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<nhusers%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. >> >> > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<nhusers%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. > -- You received this message because you are subscribed to the Google Groups "nhusers" 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/nhusers?hl=en.
