Usuário com melhor resposta
CRUD no EF

Pergunta
-
Bom Dia.....
Minhas duvidas sao:
1-Como inserir um novo registros em uma tabela que existe um relacionamento de muitos-para-um usando o Entity Framework??
Ex.: em minha tabela de Clientes tem um relacionamentocom o grupo de clientes de muitos para um(Muitos Clientes podem ter um Grupo) e ate aparece uma propiedade com o nome da tabela realcionada(Cliente.Grupo) mais na hora de persistir no banco esta dano erro.
2 - Como efeturar um update desse campo.
3 - Como efetuar um update de um relacionamento de um-para-muitos.
Ex:. Na mesma tabela tenho em relacionamento com a tabela contatos de um-para-muitos(um cliente pode ter varios contatos).
Nesse caso quiando carrego o cliente ele aparece um lista com os contatos relacionados em Clientes.Contatos, mas com faço para atualizar um contato da lista??
Nao sei se da pra entender mais é isso....
Aguem pode me ajudar???- Movido AndreAlvesLimaModerator quinta-feira, 11 de fevereiro de 2010 15:31 Migrado de VB (De:VB.NET e Visual Basic)
Respostas
-
Eu vou postar como eu faço: Lembrando que está em c#
Inserir:
//Insere um novo registro na tabela ProdutoFiscal
public void insertUfFiscal()
{
try
{
Entities db = new Entities();
UFPerfilFiscal newUfPerfilFiscal = new UFPerfilFiscal();
//Todas as referências
Empresa rEmpresa = db.Empresa.FirstOrDefault(m => m.codigo == this.codigoEmpresa);
UF rUF = db.UF.FirstOrDefault(m => m.codigo == this.codigoUF);
PerfilFiscal rPerfil = db.PerfilFiscal.FirstOrDefault(m => m.codigoperfil == this.codigoPerfil);
//Atribuição dos valores
newUfPerfilFiscal.EmpresaReference.Value = rEmpresa;
newUfPerfilFiscal.UFReference.Value = rUF;
newUfPerfilFiscal.PerfilFiscalReference.Value = rPerfil;
db.AddToUFPerfilFiscal(newUfPerfilFiscal);
db.SaveChanges();
MessageBox.Show(ClassMessages.SucessInsert);
}
catch (Exception ex)
{
MessageBox.Show(ClassMessages.ErrorInsert + ex.Message);
}
}
update:
//Altera um registro na tabela PerfilFiscal
public void updatePerfilFiscal()
{
try
{
//Instancia da Entitade
Entities db = new Entities();
//Instancia do novo Registro de Perfil Fiscal
PerfilFiscal updatePerfilFiscal = db.PerfilFiscal.FirstOrDefault(pa => pa.codigoperfil == sCodigoPerfil);
//Todas as referencias as tabelas FK que irão compor o Perfil Fiscal
OrigemIcms rOrigemIcmsDentroEstado = db.OrigemIcms.FirstOrDefault(m => m.codigoOrigemIcms == this.codigoOrigemICMSDentroEstado);
OrigemIcms rOrigemIcmsForaEstado = db.OrigemIcms.FirstOrDefault(m => m.codigoOrigemIcms == this.codigoOrigemICMSForaEstado);
Ncm rNCM = db.Ncm.FirstOrDefault(m => m.codigoNcm == this.codigoNCM);
//Atribuicao dos valores ao registro de Perfil Fiscal
updatePerfilFiscal.descricao = this.descricao;
updatePerfilFiscal.OrigemIcmsReference.Value = rOrigemIcmsDentroEstado;
updatePerfilFiscal.OrigemIcms1Reference.Value = rOrigemIcmsForaEstado;
updatePerfilFiscal.percentualIcmsDentroEstado = Convert.ToDecimal(this.percentualICMSDentroEstado);
updatePerfilFiscal.percentualIcmsForaEstado = Convert.ToDecimal(this.percentualICMSForaEstado);
updatePerfilFiscal.percentualReducaoIcmsDentroEstado = Convert.ToDecimal(this.percentualReducaoICMSDentroEstado);
updatePerfilFiscal.percentualReducaoIcmsForaEstado = Convert.ToDecimal(this.percentualReducaoICMSForaEstado);
updatePerfilFiscal.percentualIvaDentroEstado = Convert.ToDecimal(this.percentualIvaDentroEstado);
updatePerfilFiscal.percentualIpi = Convert.ToDecimal(this.percentualIPI);
updatePerfilFiscal.percentualPis = Convert.ToDecimal(this.percentualPIS);
updatePerfilFiscal.percentualCofins = Convert.ToDecimal(this.percentualCOFINS);
updatePerfilFiscal.codigoIcmsPdvDentroEstado = this.codigoICMSPdvDentroEstado;
//Altera um perfil fiscal
//db.AddToPerfilFiscal(updatePerfilFiscal);
db.SaveChanges();
MessageBox.Show(ClassMessages.SucessUpdate);
}
catch (Exception ex)
{
MessageBox.Show(ClassMessages.ErrorUpdate + ex.Message);
}
}
retalhei um pouco os métodos pois são muitos campos, mas creio que deu pra clarear bem a idéia!
- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 16:09
- Marcado como Resposta Igor Vessali segunda-feira, 1 de março de 2010 11:44
-
parece que o henrique estava passando pelo mesmo problema, dá uma olhada:
http://social.msdn.microsoft.com/Forums/pt-BR/adoptpt/thread/8b136e4e-7cef-43d0-8e9a-ee5dff3cdfd9- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 16:09
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 1 de março de 2010 16:09
Todas as Respostas
-
Eu vou postar como eu faço: Lembrando que está em c#
Inserir:
//Insere um novo registro na tabela ProdutoFiscal
public void insertUfFiscal()
{
try
{
Entities db = new Entities();
UFPerfilFiscal newUfPerfilFiscal = new UFPerfilFiscal();
//Todas as referências
Empresa rEmpresa = db.Empresa.FirstOrDefault(m => m.codigo == this.codigoEmpresa);
UF rUF = db.UF.FirstOrDefault(m => m.codigo == this.codigoUF);
PerfilFiscal rPerfil = db.PerfilFiscal.FirstOrDefault(m => m.codigoperfil == this.codigoPerfil);
//Atribuição dos valores
newUfPerfilFiscal.EmpresaReference.Value = rEmpresa;
newUfPerfilFiscal.UFReference.Value = rUF;
newUfPerfilFiscal.PerfilFiscalReference.Value = rPerfil;
db.AddToUFPerfilFiscal(newUfPerfilFiscal);
db.SaveChanges();
MessageBox.Show(ClassMessages.SucessInsert);
}
catch (Exception ex)
{
MessageBox.Show(ClassMessages.ErrorInsert + ex.Message);
}
}
update:
//Altera um registro na tabela PerfilFiscal
public void updatePerfilFiscal()
{
try
{
//Instancia da Entitade
Entities db = new Entities();
//Instancia do novo Registro de Perfil Fiscal
PerfilFiscal updatePerfilFiscal = db.PerfilFiscal.FirstOrDefault(pa => pa.codigoperfil == sCodigoPerfil);
//Todas as referencias as tabelas FK que irão compor o Perfil Fiscal
OrigemIcms rOrigemIcmsDentroEstado = db.OrigemIcms.FirstOrDefault(m => m.codigoOrigemIcms == this.codigoOrigemICMSDentroEstado);
OrigemIcms rOrigemIcmsForaEstado = db.OrigemIcms.FirstOrDefault(m => m.codigoOrigemIcms == this.codigoOrigemICMSForaEstado);
Ncm rNCM = db.Ncm.FirstOrDefault(m => m.codigoNcm == this.codigoNCM);
//Atribuicao dos valores ao registro de Perfil Fiscal
updatePerfilFiscal.descricao = this.descricao;
updatePerfilFiscal.OrigemIcmsReference.Value = rOrigemIcmsDentroEstado;
updatePerfilFiscal.OrigemIcms1Reference.Value = rOrigemIcmsForaEstado;
updatePerfilFiscal.percentualIcmsDentroEstado = Convert.ToDecimal(this.percentualICMSDentroEstado);
updatePerfilFiscal.percentualIcmsForaEstado = Convert.ToDecimal(this.percentualICMSForaEstado);
updatePerfilFiscal.percentualReducaoIcmsDentroEstado = Convert.ToDecimal(this.percentualReducaoICMSDentroEstado);
updatePerfilFiscal.percentualReducaoIcmsForaEstado = Convert.ToDecimal(this.percentualReducaoICMSForaEstado);
updatePerfilFiscal.percentualIvaDentroEstado = Convert.ToDecimal(this.percentualIvaDentroEstado);
updatePerfilFiscal.percentualIpi = Convert.ToDecimal(this.percentualIPI);
updatePerfilFiscal.percentualPis = Convert.ToDecimal(this.percentualPIS);
updatePerfilFiscal.percentualCofins = Convert.ToDecimal(this.percentualCOFINS);
updatePerfilFiscal.codigoIcmsPdvDentroEstado = this.codigoICMSPdvDentroEstado;
//Altera um perfil fiscal
//db.AddToPerfilFiscal(updatePerfilFiscal);
db.SaveChanges();
MessageBox.Show(ClassMessages.SucessUpdate);
}
catch (Exception ex)
{
MessageBox.Show(ClassMessages.ErrorUpdate + ex.Message);
}
}
retalhei um pouco os métodos pois são muitos campos, mas creio que deu pra clarear bem a idéia!
- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 16:09
- Marcado como Resposta Igor Vessali segunda-feira, 1 de março de 2010 11:44
-
Olá Daniel....
Cara muito obrigado pela força...
Eu arranho um pouquinho em C#,e deu pra entender perfeitamente.
Fiz como no exemplo mas na hora se setar o apropiedade Reference ao objeto com as informações ex:(updatePerfilFiscal.OrigemIcmsReference.Value = rOrigemIcmsDentroEstado), esta dando um erro dizendo que nao pode continuar pois os objetos estao em DataContext diferentes....
Não consegui entender pois tenho um unico context no projeto...so se forem instancias diferente....
O que pode ser???
Obrigado mais uma vez. -
parece que o henrique estava passando pelo mesmo problema, dá uma olhada:
http://social.msdn.microsoft.com/Forums/pt-BR/adoptpt/thread/8b136e4e-7cef-43d0-8e9a-ee5dff3cdfd9- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 16:09
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 1 de março de 2010 16:09
-