Hi Tim, I've had some trouble wrapping my head around many2many (and have worked around it hackishly using the tagpost entity metaphor) ..
If I understand you correctly, the above m2m mapping means that i have a table PostTag that links posts w/ tags, which /does not need/ an entity w/ mapping to the m2m link table representing it? I'm curious how this affects adding to the tags collection (updating the collection/inserting new tags)? Will adding a new, transient, tag to a post automatically perform an insert of that new tag to the tag table and also a new row in the posttag table? What if my posttag table has a pk, generated by a sequence? On 9/29/11, Tim Scott <[email protected]> wrote: > I should add that there's probably a way to reduce much of this override > code by specifying conventions for many-to-many auto mapping. But this is > how I got many-to-many auto mapping to work for me. > > > On Thursday, September 29, 2011 at 5:35 PM, Tim Scott wrote: > >> You DO NOT want to have a PostTag entity to worry about. NHibernate can >> handle this as a many-to-many association. >> >> If you were to add a Posts collection to Tag I'm guessing that >> auto-mapping would make it all just work. However, you probably don't want >> that. You want something like this: >> >> public class PostMappingOverride : IAutoMappingOverride<Post> >> { >> public void Override(AutoMapping<Post> mapping) >> { >> mapping.HasManyToMany(x => x.Tags) >> .Access.CamelCaseField() >> .ChildKeyColumn("TagId") >> .ParentKeyColumn("PostId") >> .Cascade.None() >> .Table("PostTag"); >> } >> >> Tim >> >> >> On Tuesday, September 27, 2011 at 6:15 PM, Dando wrote: >> >> > Hi, >> > >> > I'm new to FNH, and I'm currently developing a project with Sharp >> > architecture. I'm new to ORMs, being used to a more direct hand in >> > sql. >> > >> > Here were my original classes: >> > >> > class Post : Entity >> > { >> > string name >> > string content >> > List<Tag> >> > } >> > >> > class Tag : Entity >> > { >> > string name >> > } >> > >> > I let Automapper do it's stuff, but it was creating a foreign key in >> > the Tag table back to Post, which I didn't want, as I wanted Tag to be >> > it's own entity. I was expecting a join table of PostId, TagID to be >> > created (inferred) upon schema generation. >> > >> > So, after some reading, I added the join table to my classes section: >> > >> > class PostTag : Entity >> > { >> > Post post >> > Tag tag >> > } >> > >> > >> > and I changed the Post table to the following: >> > >> > class Post : ENtity >> > { >> > string name >> > IList <PostTag> >> > } >> > >> > Tag class stays the same. Now the generated schema creates the join >> > table schema as well. Schemas now look as follows: >> > >> > Post{id, name, content} >> > >> > Tag{id, name} >> > >> > PostTag{id, PostFK} >> > >> > >> > >> > For PostTag, the TagFK isn't there. >> > >> > Is there a way of doing this with automapper? Also, I don't think >> > there should be a normal Id column in this table. It should >> > presumably be a table with a composite PK of PostId and TagID? >> > >> > I don't want to be putting IList <PostTag> onto my Tag class, as the >> > Tag class should not have a reference going back to the Post object. >> > >> > Would anybody be able to help here? Does this need an override, and >> > if so, how do I go about this? >> > >> > I'm sorry if this is an EXTREMELY noobish question! >> > >> > -- >> > 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] >> > (mailto:[email protected]). >> > To unsubscribe from this group, send email to >> > [email protected] >> > (mailto:[email protected]). >> > 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 [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. > > -- Sent from my mobile device ------ Joe Brockhaus [email protected] ------------ -- 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.
