Usando dados adicionais na tabela intermediária com o NHibernate

Estou trabalhando em um projeto usado para inserir informações sobre um produto em um documento. Uma seção possui um formulário que pode ser preenchido quantas vezes for necessário para um determinado produto. As informações neste formulário estão disponíveis para serem compartilhadas em vários documentos relacionados. Uma situação típica de muitos para muitos. A diferença é que, na tabela intermediária, desejo armazenar informações específicas para essa entrada de formulário para esse documento específico.

Aqui estão algumas definições de tabela para ilustrar o ponto:

Document(
  Id int identity(1,1),
  Name nvarchar(256)
)

Form(
  Id int identity(1,1),
  FormData nvarchar(max)
)

DocumentForms(
  DocumentId int,
  FormId int,
  DocumentFormNumber varchar(64)
)

E algumas aulas:

public class Document{
  public int Id { get; protected set; }
  protected IList<Form> Forms { get; set; }
}

public class Form {
  public int Id { get; protected set; }
  public string DocumentFormNumber { get; set; }
  public string FormData { get; set; }
}

Existe uma maneira de criar um mapeamento que suporte a leitura de dados adicionais ao ler formulários como parte do relacionamento de muitos para muitos com o Document? Preciso usar um procedimento armazenado ao carregar dados com o relacionamento muitos para muitos? Ainda preciso carregar os objetos Form sem que eles façam parte de um documento, mas depois que eles forem adicionados ao documento, preciso que eles tenham um número gerado com base em algumas regras simples. Mas esse número é obviamente específico do documento. Portanto, embora o próximo documento possa usar os mesmos dados do formulário, ele precisa de um novo número.

Alguma sugestão de como isso pode ser alcançado?

questionAnswers(1)

yourAnswerToTheQuestion