2010-11-17 20 views
0

我想映射一個POCO作爲多對多的關係。我不想要包含BehavioralEvents的行爲屬性。我很確定多對多映射必須在兩個地方,但我不想在我的行爲類相應的屬性。流利Nhibernate HasManyToMany雙方與諾普地圖

我聽說你可以使用無操作訪問操作符,但我不知道如何在Fluent Nhibernate中執行操作。

請告知:

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

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

行爲類(沒有提到回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); 
    } 
} 

回答

0

如果您不需要從行爲,那麼不要添加映射。 如果您需要並且不想進行操作,請使用Cascade.None()

相關問題