none
EntiFramework De novo RRS feed

  • Pergunta

  • 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 

    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; }
    
    
        }
    }
    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.
    
        }
    }
    

    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; }
        }
    }
    


    quinta-feira, 13 de outubro de 2016 20:50

Respostas

  • 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.
    sexta-feira, 14 de outubro de 2016 11:44