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.

Reply via email to