Conflito com chave estrangeira, asp-net-mvc após relacionamento

Projeto de cadastro MVC5 em EntityFramework, .net6, Visual Studio Community 2022 e SQLServer 2019.

Eu gostaria de entender a mecânica do que está ocorrendo ou onde eu devo estar errando.

Tenho as models PessoaModel.cs e EnderecoModel.cs. Quando não relacionadas armazenam normalmente os valores. O problema acontece após o relacionamento, quando vai salvar a informação no banco retorna a mensagem abaixo. Pessoa sava a informação no banco, mas endereço gera o erro de conflito de chave estrangeira

SqlException: A instrução INSERT conflitou com a restrição do FOREIGN KEY "FK_Enderecos_Pessoas_PessoaID". O conflito ocorreu no banco de dados "BancoEleitoresWeb", tabela "dbo.Pessoas", column 'Id'. A instrução foi finalizada.

Cheguei ao ponto de criar um campo para inserir a chave estrangeira manualmente, mas não importa, inserindo a chave manualmente ou automaticamente, a mensagem aparece.

Quando faço um insert into direto no banco funciona corretamente.

public class PessoaModel
    {
        public PessoaModel()
        {
            this.Enderecos = new HashSet<EnderecoModel>();
        }

        [Column("Id")]
        [Display(Name = "Código")]
        public int Id { get; set; }

        [Column("Nome")]
        [Display(Name = "Nome")]
        public string? Nome { get; set; }

        [Column("Psudonimo")]
        [Display(Name = "Pseudonimo")]
        public string? Pseudonimo { get; set; }

        [Column("Cpf")]
        [Display(Name = "CPF")]
        public string? Cpf { get; set; }

        [Column("Nascimento")]
        [Display(Name = "Nascimento")]
        [DataType(DataType.Date)]        
        [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
        public DateTime? Nascimento { get; set; }

        [Column("Filhos")]
        [Display(Name = "Filhos")]
        public string? Filhos { get; set; }

        [Column("Sexo")]
        [Display(Name = "Sexo")]
        public string? Sexo { get; set; }

        [Column("Endereco")]
        [Display(Name = "Endereço")]
        //public EnderecoModel? Enderecos { get; set; }
        public virtual ICollection<EnderecoModel> Enderecos { get; set; }
}

    public class EnderecoModel
    {
        [Column("Id")]
        [Display(Name = "Código")]
        public int Id { get; set; }

        [Column("Logradouro")]
        [Display(Name = "Logradouro")]
        public string? Logradouro { get; set; }

        [Column("Numero")]
        [Display(Name = "Numero")]
        public string? Numero { get; set; }

        [Column("Complemento")]
        [Display(Name = "Complemento")]
        public string? Complemento { get; set; }

        [Column("Bairro")]
        [Display(Name = "Bairro")]
        public string? Bairro { get; set; }

        [Column("Cidade")]
        [Display(Name = "Cidade")]
        public string? Cidade { get; set; }

        [Column("UF")]
        [Display(Name = "UF")]
        public string? UF { get; set; }

        [Column("CEP")]
        [Display(Name = "CEP")]
        public string? CEP { get; set; }

        public int PessoaID { get; set; }
        public PessoaModel? PessoaModel { get; set; }
    }

public class ContatoController : Controller
    {
        private readonly IPessoaRepositorio _pessoaRepositorio;
        private readonly IEnderecoRepositorio _enderecoRepositorio;
        public ContatoController(IPessoaRepositorio pessoaRepositorio, 
                                 IEnderecoRepositorio enderecoRepositorio)
        {
            _pessoaRepositorio = pessoaRepositorio;
            _enderecoRepositorio = enderecoRepositorio;
        }

        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Criar()
        {
            return View();
        }

        public IActionResult CriarEndereco()
        {
            return View();
        }

        public IActionResult Editar()
        {
            return View();
        }

        public IActionResult Detalhes()
        {
            return View();
        }

        public IActionResult ApagarConfirma()
        {
            return View();
        }

        [HttpPost]
        public IActionResult Criar(PessoaModel pessoa)
        {
            _pessoaRepositorio.Adicionar(pessoa);
            return RedirectToAction("Index");
        }

        [HttpPost]
        public IActionResult CriarEndereco(EnderecoModel endereco)
        {
            _enderecoRepositorio.Adicionar(endereco);
            return RedirectToAction("Index");
        }
    }

    public interface IPessoaRepositorio
    {
        List<PessoaModel> BuscarTodos();
        PessoaModel Adicionar(PessoaModel pessoa);
    }
public class PessoaRepositorio : IPessoaRepositorio
    {
        private readonly BancoContexto _bancoContexto;
        public PessoaRepositorio(BancoContexto bancoContexto)
        {
            _bancoContexto = bancoContexto;
        }
        public PessoaModel Adicionar(PessoaModel pessoa)
        {
            _bancoContexto.Pessoas.Add(pessoa);
            _bancoContexto.SaveChanges();
            return pessoa;
        }

        public List<PessoaModel> BuscarTodos()
        {
            return _bancoContexto.Pessoas.ToList();
        }
    }
    public interface IEnderecoRepositorio
    {
        List<EnderecoModel> BuscarTodos();
        EnderecoModel Adicionar(EnderecoModel endereco);
    }
 public class EnderecoRepositorio : IEnderecoRepositorio
    {
        private readonly BancoContexto _bancoContexto;
        public EnderecoRepositorio(BancoContexto bancoContexto)
        {
            _bancoContexto = bancoContexto;
        }
        public EnderecoModel Adicionar(EnderecoModel endereco)
        {
            _bancoContexto.Enderecos.Add(endereco);
            _bancoContexto.SaveChanges();
            return endereco;
        }

        public List<EnderecoModel> BuscarTodos()
        {
            return _bancoContexto.Enderecos.ToList();
        }
    }
 public class BancoContexto : DbContext
    {

        public BancoContexto(DbContextOptions<BancoContexto> options) : base(options) { }

        public DbSet<PessoaModel> Pessoas { get; set; } = null!;
        public DbSet<EnderecoModel> Enderecos { get; set; } = null!;
        public DbSet<PessoaEndereco> PessoaEnderecos { get; set; } = null!;
        
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<EnderecoModel>()
                .HasOne( p => p.PessoaModel)
                .WithMany(e => e.Enderecos)
                .HasForeignKey(e => e.PessoaID);
        }
        
    }
@model EnderecoModel
@{
    ViewData["Title"] = "Adicionar endereço";
}
<h1>Novo Endereço</h1>

<br />

<form asp-controller="Contato" asp-action="CriarEndereco" method="post">

    <div>

        <div class="row g-3" method="get" action=".">

            <div class="col-sm-2">
                <input asp-for="CEP" type="text" class="form-control" placeholder="CEP" name="cep" id="cep" size="10">
            </div>

        </div>

        <br />

        <div class="row g-3" method="get" action=".">

            <div class="col-sm-6">
                <input asp-for="Logradouro" type="text" class="form-control" placeholder="Logradouro" id="logradouro">
            </div>

            <div class="col-sm-2">
                <input asp-for="Numero" type="text" class="form-control" placeholder="Número" id="numero">
            </div>

            <div class="col-sm-4">
                <input asp-for="Complemento" type="text" class="form-control" placeholder="Complemento" id="complemento">
            </div>

            <div class="col-sm-4">
                <input asp-for="Bairro" name="bairro" type="text" class="form-control" placeholder="Bairro" id="bairro">
            </div>

            <div class="col-sm-3">
                <input asp-for="Cidade" name="cidade" type="text" class="form-control" placeholder="Cidade" id="cidade">
            </div>

            <div class="col-sm-2">
                <input asp-for="UF" name="uf" type="text" class="form-control" placeholder="UF" id="uf">
            </div>

            <div class="col-sm-2">
                <input asp-for="PessoaID" name="P" type="text" class="form-control" placeholder="UF" id="uf">
            </div>

        </div>

    </div>

    <br />

    <div class="d-grid gap-2 col-6 mx-auto">
        <button type="submit" class="btn btn-primary btn-block">Adicionar</button>
        <a class="btn btn-secondary btn-block" asp-controller="Contato" asp-action="Index" role="button">Voltar</a>
    </div>

Link do projeto

Se tento inserir os dados direto no SQLServer funciona direitinho.