Olá Guilherme,
não precisaria criar uma classe para a tabela intermediária, no NHibernate você consegue criar um relacionamento many to many apenas com listas e configurações.
Vamos supor que você tem a classe Aluno e Curso. Cada aluno faz vários cursos e cada curso tem vários alunos. Criaria a classe para estes dois, cada um contendo uma lista para o outro:
class Aluno
{
// propriedade de id ...
IList<Curso> Cursos { get; private set; }
}
class Curso
{
// propriedade de id ...
IList<Aluno> Alunos { get; private set; }
}
Depois para virar um many to many você configura nos xmls de mapeamento:
<class name="Aluno">
<id ....>
<bag name="Cursos" table="Aluno_x_Curso">
<key column="alunoId"/>
<many-to-many class="Curso" column="cursoId"/>
</bag>
</class>
<class name="Curso">
<id ....>
<bag name="Alunos" table="Aluno_x_Curso" inverse="true">
<key column="cursoId"/>
<many-to-many class="Aluno" column="alunoId"/>
</bag>
</class>