Say if I have the following class:
public class Entry : Entity<int> { public Entry() { Behaviours = new List<EntryBehaviour>(); } public virtual IList<EntryBehaviour> Behaviours { get; set; } } public class EntryBehaviour { public virtual Entry Entry { get; set; } public virtual int EntryID { get; set; } public virtual Behaviour Behaviour { get; set; } public virtual int BehaviourID { get; set; } } public class Behaviour : Lookup<int> { public Behaviour() { Entries = new List<EntryBehaviour>(); } public virtual Category Category { get; set; } public virtual int CategoryID { get; set; } public virtual IList<EntryBehaviour> Entries { get; set; } } public class Category : Lookup<int>  ...

Go to the complete details ...