Isso mesmo, a idéia é ter vários endereços por pessoa (Cobrança, Comercial, Entrega, etc.) Perceba que a tabela tipo_endereco é uma tabela de apoio (dominio) apenas para armazenar os tipos de endereços, ela já vem populada através de meu script de criação da base de dados.
Segue abaixo meu código, onde dentro do dao é que utilizo o Entity. Da forma que está implementado, ocorre erro de duplicate Key, no tipo_Endereco, pois o Entity tenta inserir este registro que já existe na tabela. Para não ocorrer este erro devo sempre fazer uma busca no tipo_endereco (para que o registro seja monitorado pelo changeTracker) e incluir no objeto endereco a referencia de tipo endereco retornado do banco. Meu questionamento é que sempre tenho que fazer essa query em tipo_endereco antes de inserir e atualizar?? Mesmo já tendo o IDTipoEndereco previamente selecionado em um combo??
Em modelos de dados onde tenho várias tabelas de apoio, não acumularia um excesso de querys de consultas previas apenas para incluir ou alterar um registro ??
using (PessoaDAO dao = new PessoaDAO())
{
Pessoa p = new Pessoa
{
Email = "teste222@teste.com.br",
NomeFantasia = "teca comercio e serviço 2",
NomeRazao = "teca Comércio e serviço LTDA ME 2",
NumCadastro = "55.555.555/0001-55",
NumInscricao = "2222222",
NumInscMunicipal = "2222",
TipoInscricao = Convert.ToChar("I"),
TipoPessoa = Convert.ToChar("J")
};
Endereco end = new Endereco
{
Bairro = "Vila Albino",
Cep = "17300-000",
Cidade = "Barra Bonita",
Ativo = "S",
Padrao = Convert.ToChar("S"),
Logradouro = "Martha jose",
Numero = "343",
Uf = "SP",
TipoEndereco = new TipoEndereco { TipEnderecoId = 66}
};
Endereco end2 = new Endereco
{
Bairro = "Centro",
Cep = "17340-000",
Cidade = "Barra Bonita",
Ativo = "S",
Padrao = Convert.ToChar("N"),
Logradouro = "Primeiro de Março",
Numero = "132",
Uf = "SP",
TipoEndereco = new TipoEndereco { TipEnderecoId = 68 }
};
p.Enderecos.Add(end);
p.Enderecos.Add(end2);
dao.Inserir(p);