Olá Rafael! Segue o mapeamento das classes.
public class PapelMap : ClassMap<Papel>
{
public PapelMap()
{
Table("PAPEL");
Id(p => p.Codigo, "CD_PAPEL");
References(p => p.PessoaFisica, "CD_PESSOA_FISICA");
References(p => p.Cargo, "CD_CARGO");
References(p => p.ModeloCracha, "CD_MODELO");
Map(p => p.SenhaLeitora, "TX_SENHA");
Map(p => p.PessoaJuridica, "BL_JURIDICO").Not.Nullable();
Map(p => p.AntiPassBack, "BL_PASSBACK").Not.Nullable();
Map(p => p.SobAnalise, "BL_SOB_ANALISE").Not.Nullable();
Map(p => p.Supervisor, "BL_SUPERVISOR").Not.Nullable();
Map(p => p.Supervisionado, "BL_SUPERVISIONADO").Not.Nullable();
HasMany(p => p.ASOs).KeyColumn("CD_PAPEL").Inverse();
HasMany(p => p.PapelLogs)
.KeyColumn("CD_PAPEL");
HasMany(p => p.ExcecaoAcesso)
.KeyColumn("CD_PAPEL");
}
}
public class ColaboradorMap : SubclassMap<Colaborador>
{
public ColaboradorMap()
{
Table("COLABORADOR");
KeyColumn("CD_PAPEL");
References(b => b.Empresa, "CD_EMPRESA").Not.Nullable();
Map(b => b.PIS, "NU_PIS");
Map(b => b.HoristaMensalista, "TX_MENSALISTA");
Map(b => b.DataAdmissao, "DT_ADMISSAO");
Map(b => b.Salario, "NU_SALARIO");
Map(b => b.Observacao, "TX_OBSERVACAO");
Map(b => b.ConselhoProfissional, "TX_CONSELHOPROF");
Map(b => b.RegistroProfissional, "TX_REGISTROPROF");
}
public class PrestadorServicoMap : SubclassMap<PrestadorServico>
{
public PrestadorServicoMap()
{
Table("PRESTADOR");
KeyColumn("CD_PAPEL");
References(p => p.Solicitante, "CD_SOLICITANTE").Not.Nullable();
References(p => p.Empresa, "CD_EMPRESA").Nullable();
References(p => p.Fornecedor, "CD_FORNECEDOR").Nullable();
Map(p => p.DataAdmissao, "DT_ADMISSAO").Nullable();
Map(p => p.DataValidade, "DT_VALIDADE").Not.Nullable();
Map(p => p.TipoPrestador, "TX_PRESTADOR").Nullable().Length(50);
Map(p => p.Observacao, "TX_OBSERVACAO").Nullable().Length(250);
}
}