Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Clauido José

EntityFrameWork

Recommended Posts

Pessoal estou fazendo um aplicação aqui em casa usando Windows Form e entity para aparender como ja coloquei nos outros tópicos, só para complicar eu criei duas classe chamadas Clientes e Endereco na qual Endereco vai ser relacionada com Clientes pelo Id do Cliente mas na hora que eu executo a aplicação ela aparece mesmo quando eu vou no fazer alguma manipulação na tabela Editora que estava ok ele aparece o seguinte erro:

"The ForeignKeyAttribute on property 'Clientes' on type 'EntiFrameWorkWF.Endereco' is not valid. The foreign key name 'ClienteId' was not found on the dependent type 'EntiFrameWorkWF.Endereco'. The Name value should be a comma separated list of foreign key property names."

Vou postar a duas classe e dbContext para vcs olharem não achei o erro achei que era porque não estava criada no banco foi e criei as tabelas mesmo assim esta dando o erro:

Esse é repositorio

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//-----------------------
using System.Data.Entity;

namespace EntiFrameWorkWF
{
    class LivrariaContext : DbContext
    {
            

        public LivrariaContext()
            : base("Livraria")
        {
            //Disabelita a inicialização do banco
            Database.SetInitializer<LivrariaContext>(new CreateDatabaseIfNotExists<LivrariaContext>());
        }

        public DbSet<Editora> Editora { get; set; }
        public DbSet<Endereco> Endereco { get; set; }
        public DbSet<Clientes> Clientes { get; set; }


    }
}

A classe clientes:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//-------------------
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;

namespace EntiFrameWorkWF
{
    [Table("Clientes")]
    public class Clientes
    {
        [Key]
        public long? ClienteId { get; set; }

        [MaxLength(60)]
        [Column("Nome", TypeName="varchar")]
        public string Nome { get; set; }

        [MaxLength(15)]
        [Column("Cpf", TypeName="nchar")]
        public string Cpf { get; set; }

        [MaxLength(60)]
        [Column("Email", TypeName = "varchar")]
        public string Email { get; set; }

        [MaxLength(11)]
        [Column("Telefone", TypeName = "nchar")]
        public string Telefone { get; set; }

        [MaxLength(11)]
        [Column("Celular", TypeName = "nchar")]
        public string Celular { get; set; }


        public virtual IQueryable<Endereco> Endereco { get; set; }


        //System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> 
        //System.InvalidOperationException: The ForeignKeyAttribute on property 'Endereco' on type 'EntiFrameWorkWF.Clientes' is not valid. 
        //The foreign key name 'EnderecoId' was not found on the dependent type 'EntiFrameWorkWF.Clientes'. 
        //The Name value should be a comma separated list of foreign key property names.

    }
}

A classe Endereço:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//-------------------
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;

namespace EntiFrameWorkWF
{
    
    [Table("Endereco")]
    public class Endereco
    {
        [Key]
        public long? EnderecoID { get; set; }

        public long? ClienteID { get; set; }

        [MaxLength(10)]
        [Column("Cep", TypeName="nchar")]
        public string Cep { get; set; }
        [Required(ErrorMessage="Campo cep é obrigatório")]
            
        [MaxLength(60)]
        [Column("Logradouro", TypeName="VARCHAR")]
        public string Logradouro { get; set; }

        [MaxLength(10)]
        [Column("Numero", TypeName="nchar")]
        public string Numero { get; set; }

        [MaxLength(10)]
        [Column("Complemento", TypeName="nchar")]
        public string Complemento { get; set; }

        [MaxLength(20)]
        [Column("Bairro", TypeName = "nchar")]
        public string Bairro { get; set; }

        [MaxLength(20)]
        [Column("Estado",TypeName="nchar")]
        public string Estado { get; set; }

        [MaxLength(20)]
        [Column("Cidade",TypeName="nchar")]
        public string  Cidade { get; set; }

        [MaxLength(20)]
        [Column("Pais", TypeName="nchar")]
        public string Pais { get; set; }

        [ForeignKey("ClienteId")]
        public virtual Clientes Clientes { get; set; }
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolvi o problema era com o relacionamento com esse relacionamento é "One to Many na classe cliente eu tirei o plubic virutal e na classe Endereço eu acrescentei a o ICollection fica a dica estudar mais as entidades relacionais

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.