Fórum Herança EDM #3575

12/03/2009

0

Pessoal estou com uma duvida para inserir registro em uma estrutura com herança veja como esta minha estrutura no EDM:     Meu banco de dados esta assim:   Entidade: Pessoa IdPessoa int Nome varchar(50)   Entidade: PessoaFisica IdPessoa int CPF varchar(15)   Entidade: PessoaJuridica IdPessoa int CNPJ varchar(20)   Entidade: Cliente IdPessoa int Observacao text   Entidade: Fornecedor IdPessoa int NomeFantasia varchar(50)     Para inserir um novo cliente do tipo pessoa fisica por exemplo estou usando o código abaixo:   Model.ModelContainer db = new Model.ModelContainer(); Model.Cliente cliente = new Model.Cliente(); cliente.IdPessoa = 1; cliente.Nome = "Jose"; cliente.Observacao = "teste"; db.AddtoPessoa(cliente);   Model.PessoaFisica pessoa = new Model.PessoaFisica(); pessoa.IdPessoa = 1; pessoa.CPF = "1111111111"; db.AddToPessoa(pessoa);   db.SaveChanges();   Porém esse codigo da erro, ele executa a primeira parte que adiciona o cliente mas quando adiciona a pessoa fisica ele da erro, porque na verdade a pessoa já foi inserida, mas a tabela herdada pessoa fisica não. O que posso fazer para resolver esse problema??   Aguardo uma resposta o mais breve possivel   Julio Nefrodata Sistemas
Nefrodata Ltda

Nefrodata Ltda

Responder

Posts

12/03/2009

[devmedia .net]

Opa tudo bem ? Bom seu código está errado no momente que se adiciona a pessoa física   Model.PessoaFisica pessoa = new Model.PessoaFisica(); pessoa.IdPessoa = 1; pessoa.CPF = "1111111111"; db.AddToPessoa(pessoa); ---->>> Esse linha deveria ser db.AddToPessoFisica(pessoa);   Altere e vai funcionar...   Abraços   Carlos Jr
Responder

Gostei + 0

12/03/2009

Nefrodata Ltda

Carlos não existe metodo AddToPessoaFisica a classe pessoafisica herda da classe pessoa não tem esse método implementado para a classe.
Responder

Gostei + 0

12/03/2009

[devmedia .net]

Opa, na verdade te expliquei errado...     Model.PessoaFisica pessoa = new Model.PessoaFisica(); pessoa.IdPessoa = 1; --->>> Erro :  Você não tem IdPessoa na entidade PessoaFisica pessoa.CPF = "1111111111"; db.AddToPessoa(pessoa);     Tente utilizar da seguinte maneira...   Model.Pessoa pessoa = new Model.Pessoa();   pessoa.IdPessoa = 1; pessoa.Nome = "Jose";   pessoa.Cliente.Observacao = "teste";   pessoa.PessoaFisica.CPF = "1111111111";   db.AddtoPessoa(pessoa);   Pode ser que funcione...   O Entity Frameowork, é um modelo de dados ainda em teste cara, ele tem vários problemas que ninguém ainda conseguiu resolver, nem mesmo o fabricante, portanto lhe aconselho a não usar Heranças no Entity Framework.   Aguardo retorno.   Abraços   Carlos Jr
Responder

Gostei + 0

12/03/2009

Nefrodata Ltda

Carlos desse jeito também não funciona como a classe cliente e pessoafisica herda da classe pessoa não existe navegabilidade da maneira que vc passou. Mas consegui resolver de outra maneira. Juntei as classes pessoa, pessoafisica e pessoajuridica numa unica classe e acrescentei um atributo tipopessoa que define qual o tipo de pessoa.   Mesmo assim valeu pela dica.   Abraços   Júlio
Responder

Gostei + 0

12/03/2009

[devmedia .net]

Olá, que bom que resolveu.   Como lhe disse, o Entity Framework não funciona direito ainda, isso funciona no LINQ com certeza, que também não é um boa solução.   Abraços   Carlos Jr
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar