Precisa de ajuda com o mapeamento do NHibernate / Fluent NHibernate

Digamos que você tenha a seguinte estrutura de tabela:

                  ==============================  
                  | Case                       |
                  ==============================
                  | Id           | int         |
                  | ReferralType | varchar(10) |
        +---------| ReferralId   | int         |---------+
        |         ==============================         |
        |                      |                         |
        |                      |                         |
======================  ======================  ======================        
| SourceA            |  | SourceB            |  | SourceC            |
======================  ======================  ======================
| Id   | int         |  | Id   | int         |  | Id   | int         |
| Name | varchar(50) |  | Name | varchar(50) |  | Name | varchar(50) |
======================  ======================  ======================

Com base no ReferralType, o ReferralId contém o ID para SourceA, SourceB ou SourceC

Estou tentando descobrir como mapear isso usando o Fluent NHibernate ou simplesmente o NHibernate em um modelo de objeto. Eu tentei um monte de coisas diferentes, mas não tive sucesso. Alguma ideia?

O modelo de objeto pode ser algo como:

public class Case
{ 
  public int Id { get; set; }
  public Referral { get; set; }
}

public class Referral
{
  public string Type { get; set; }
  public int Id { get; set; }
  public string Name { get; set; }
}

questionAnswers(2)

yourAnswerToTheQuestion