2010-11-17 3 views
0

J'essaye de cartographier un POCO comme une relation many-to-many. Je ne veux pas une propriété sur Behavior qui contient BehavioralEvents. Je suis assez sûr que le mappage Many-to-Many doit être dans les deux endroits, mais je ne veux pas la propriété correspondante dans ma classe Behavior.Fluent Nhibernate HasManyToMany les deux côtés avec noop map

J'ai entendu dire que vous pouviez utiliser un opérateur d'accès sans opération, mais je ne sais pas comment le faire dans Fluent Nhibernate.

S'il vous plaît conseiller:

public class BehavioralEvent : AggregateRoot  
    {  
     protected internal IList<Behavior> Behaviors { get; private set; } 

     public BehavioralEvent() 
     { 
      Behaviors = new List<Behavior>(); 
     } 
    } 

Classe de comportement (Aucune référence retour à BehavioralEvent)

public class Behavior : AggregateRoot 
{ 
     protected internal virtual string Name { get; private set; } 
     protected internal virtual string Definition { get; private set; }   

     public Behavior(string name, Guid id) 
     { 
      this.Id = id; 
      this.Name = name;    
     } 

     protected Behavior(){}   
    } 

BehavioralEventClassMap:

public class BehavioralEventClassMap : ClassMap<BehavioralEvent> 
    { 
     public BehavioralEventClassMap() 
     { 
      Id(x => x.Id, "BehavioralEventId").GeneratedBy.Assigned(); 

      HasManyToMany(x => x.Behaviors) 
       .Cascade.All() 
       .Table("BehaviorData") 
       .ParentKeyColumn("BehavioralEventId") 
       .ChildKeyColumn("BehaviorId"); 
     } 
    } 

BehaviorClassMap:

public class BehaviorClassMap : ClassMap<Behavior> 
{ 
    public BehaviorClassMap() 
    { 
     Table("Behaviors"); 
     Id(x => x.Id, "BehaviorId").GeneratedBy.Assigned(); 
     Map(x => x.Name).Not.Nullable(); 
     Map(x => x.Definition); 
    } 
} 

Répondre

0

Si vous n'avez pas besoin de Behavior, ne pas ajouter de mappage. Si vous voulez et ne voulez pas mettre l'opération, utilisez Cascade.None()