title: Foreign key receiving two primary keys from the same table - Fluent Nhibernate
body: <p>I am having a problem trying to create a Composite Id that receives one foreign key from one table and another foreign key from another table, but this second foreign key contains two primary keys and this giving my a big headache to resolve. Anyone knows how to resolve this problem?</p>
  
  <p>Here is my code:</p>
  
  <p>Entity</p>
  
  <pre><code>public class GrupoArquivo
  {
      public GrupoArquivo() {}
  
      public GrupoArquivo(ArquivoRetorno arquivoRetorno, GrupoModulo grupo, GrupoModulo modulo) : this()
      {
          Arquivo = arquivoRetorno;
          Grupo = grupo;
          Modulo = modulo;
      }
  
      public virtual ArquivoRetorno Arquivo { get; protected set; }
      public virtual GrupoModulo Grupo { get; protected set; }
      public virtual GrupoModulo Modulo { get; protected set; }
  
      public override bool Equals(object obj)
      {
          var grupoArquivo = (obj as GrupoArquivo);
  
          if (grupoArquivo != null)
          {
              if (ReferenceEquals(obj, this))
                  return true;
  
              var thisHash = GetHashCode();
              var otherHash = grupoArquivo.GetHashCode();
  
              return thisHash.Equals(otherHash);
          }
          return false;
      }
  
      public override int GetHashCode()
      {
          return string.Concat("{0}|{1}|{2}", Arquivo, Grupo, Modulo).GetHashCode();
      }
  }
  </code></pre>
  
  <p>Mapping</p>
  
  <pre><code> public class GrupoArquivoMap : ClassMap&lt;GrupoArquivo&gt;
  {
      public GrupoArquivoMap()
      {
          Schema(Const.SCHEMA);
          Table(Const.TB_EMAIL_GRUPO_ARQUIVO);
  
          CompositeId()
              .KeyReference(x =&gt; x.Arquivo, Const.ID_ARQUIVO)
              .KeyReference(x =&gt; x.Grupo, Const.ID_GRUPO)
              .KeyReference(x =&gt; x.Modulo, Const.ID_MODULO)
              ;
      }
  }
  </code></pre>