I have a Person class (Campo PessoaId) that relates to the PersonContaBancaria class (Fields: PersonAccountBancariaId, PersonAccountBank, PersonId and PersonAccountId).
Logic: In the Person table the individuals and legal entities will be stored with different Ids:
Ex:
1 - Peter *
2 - Maria *
3 - Banco Santander
4 - Banco do Brasil
5 - Sicoob
Let's say that in the PersonContaBancaria table, I need to save a Maria account whose bank is Sicoo ... so the PersonId field in the Person table should be related to the PersonId and PersonIndigoBank fields in the PersonContaBank ... >
Ex:
PeopleContactsBankingId = 1
PersonId = 2 (Mary)
Person BankId = 5 (Sicoob)
How do I do this using the Entity Framework Core? Here is my current code:
public class Pessoa
{
public int PessoaId { get; set; }
public int PessoaTipoId { get; set; }
public int PessoaSituacaoId { get; set; }
public virtual PessoaTipo PessoaTipo { get; set; }
public virtual ICollection<PessoaContaBancaria> PessoaContasBancarias { get; set; }
}
public class PessoaContaBancaria
{
public int PessoaContaBancariaId { get; set; }
public int PessoaId { get; set; }
public int PessoaBancoId { get; set; }
public string Agencia { get; set; }
public string NumeroConta { get; set; }
public DateTime DataInclusao { get; set; }
public bool Sistema { get; set; }
public virtual Pessoa Pessoa { get; set; }
}
public void PessoaContaBancariaMapping(ModelBuilder modelBuilder)
{
modelBuilder.Entity<PessoaContaBancaria>()
.ToTable("tblPessoaContaBancaria");
modelBuilder.Entity<PessoaContaBancaria>()
.HasKey(p => new { p.PessoaContaBancariaId, p.PessoaId });
modelBuilder.Entity<PessoaContaBancaria>()
.HasOne(p => p.Pessoa)
.WithMany(p => p.PessoaContasBancarias)
.HasForeignKey(p => p.PessoaId)
.IsRequired();
modelBuilder.Entity<PessoaContaBancaria>()
.Property(p => p.Agencia)
.HasColumnName("Agencia")
.HasColumnType("Varchar(15)")
.HasMaxLength(15)
.IsRequired();
modelBuilder.Entity<PessoaContaBancaria>()
.Property(p => p.NumeroConta)
.HasColumnName("NumeroConta")
.HasColumnType("Varchar(15)")
.HasMaxLength(15)
.IsRequired();
modelBuilder.Entity<PessoaContaBancaria>()
.Property(p => p.DataInclusao)
.HasColumnName("DataInclusao")
.HasColumnType("DateTime")
.IsRequired();
modelBuilder.Entity<PessoaContaBancaria>()
.Property(p => p.Sistema)
.HasColumnName("Sistema")
.HasColumnType("Bit")
.IsRequired();
}