2010-12-03 14 views
0

gibt es drei vorhandenen Tabellen wie die nachstehend aufgeführten:NHibernate hat viele Verbindungen mit Enkel-Tabelle mit mehreren Many-to-One Referenzen

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) 
) 

die Einheiten sind definiert wie:

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; } 
} 

ich habe hat folgende Überschreibungen versucht:

BusinessUnit Auto-Mapping-Override:

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

Category Auto-Mapping-Überschreibung:

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

ich habe hat-viele und viele-zu-eins-Konventionen, die Pflege der Spaltennamen nehmen, so dass ich glaube nicht, dass ich hier angeben müssen (oder zumindest denke ich das nicht). Der Auto-Mapper kümmert sich um die Viele-zu-Eins-Referenz für Paragraph.

das has-many Mapping für BusinessUnit funktioniert nicht. Wie kann ich das abziehen?

Antwort

0

Sie müssen hier HasManyToMany

verwenden