Search code examples
nhibernatefluent-nhibernatehas-manyautomapping

NHibernate Has Many Relationship with Grandchild Table Containing Multiple Many-to-One References


there are three existing tables defined like the following:

create table business_units (id number(10,0) not null, ... , primary key (id))
create table categories (id number(10,0) not null, ... , primary key (id))
create table paragraphs (
    id number(10,0) not null,
    business_unit_fk number(10,0),
    category_fk number(10,0),
    ...,
    primary key (id)
)

the entities are defined like:

public class BusinessUnit : Entity {
    public virtual IList<Category> Categories { get; protected set; }
}

public class Category : Entity {
    public virtual IList<Paragraph> Paragraphs { get; protected set; }
}

public class Paragraph : Entity {
    public virtual BusinessUnit Category { get; set; }
    public virtual Category Category { get; set; }
}

i have tried the following overrides:

BusinessUnit auto-mapping override:

mapping.HasMany(x => x.Categories)
    .Table("pp_paragraphs")
    .KeyColumn("business_unit_fk")
    .Inverse();

Category auto-mapping override:

mapping.HasMany(x => x.Categories)
    .Inverse();

i have has-many and many-to-one conventions that take care of the column names, so i don't think i need to specify here (or at least i don't think so). The auto-mapper takes care of the many-to-one reference for Paragraph.

the has-many mapping for BusinessUnit does not work. how can i pull this off?


Solution

  • You must use HasManyToMany here