Usuário com melhor resposta
EntiFramework De novo

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; } } }
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.
- Marcado como Resposta Robson William SilvaModerator sexta-feira, 14 de outubro de 2016 12:06