Usuário com melhor resposta
Como evitar a exclusão em cascata de registros relacionados no Entity Framework

Pergunta
-
Olá como faço para evitar que o EF delete em cascata uma categoria que esteja relacionada a um produto.(sabendo que o EF por padrão deleta todos os produtos relacionados a categoria excluida). Obrigado
- Editado tiagomx terça-feira, 10 de dezembro de 2013 20:06 error
Respostas
-
Cara, se eu não me engano, o EF gera os relacionamentos N para N com DELETE CASCADE ON por padrão. Você desativar isso removendo a convenção, pelo método OnModelCreating
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); }
Existe também a OneToManyCascadeConvention.
É isso que você queria?
Ao infinito e além!
- Sugerido como Resposta João_ PradoModerator segunda-feira, 16 de dezembro de 2013 18:08
- Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 11:17
-
Boa tarde,
Não sei como vc criou o seu mapeamento, mas se foi com o EntityTypeConfiguration do Code Firt, tenta algo assim:
// inicio do seu codigo
this.HasRequired(x => x.Department) .WithMany() .HasForeignKey(x => x.DepartmentId) .WillCascadeOnDelete(false);// fim do seu código
Atenção a última linha onde tem o parâmetro false.
Att, Vitor Hugo Salgado
- Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 11:17
Todas as Respostas
-
-
Vc esta perguntando sobre a camada de controller ?
ID Produto:
ID Categoria: ----->ID Categoria:
NomeProduto: NomeCategoria:
Public virtual.....
O que acontece e q se eu excluir uma categoria usando o crud que vem por padrao no Asp.net mvc 4 ele exclui todos os produtos
-
Amigo!
tem 3 Formas que podem ser gerado o Entity Framework:
DataBaseFirst -> o banco existe e é gerado em cima dessa banco !!!
ModelFirst -> é criado um modelo visual e ele cria todo o script de criação desse banco!!!
CodeFirst -> cria-se o código de classes e o mesmo se não houver o banco ele cria automáticamente
Se seu banco de dados estiver em Cascata e você gerar isso pelo DataBaseFirst ele faz isso mesmo!
Como ta seu bancooooooooooooooooooo ! e principal como foi gerado essa camada?
-
-
-
Cara, se eu não me engano, o EF gera os relacionamentos N para N com DELETE CASCADE ON por padrão. Você desativar isso removendo a convenção, pelo método OnModelCreating
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); }
Existe também a OneToManyCascadeConvention.
É isso que você queria?
Ao infinito e além!
- Sugerido como Resposta João_ PradoModerator segunda-feira, 16 de dezembro de 2013 18:08
- Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 11:17
-
Boa tarde,
Não sei como vc criou o seu mapeamento, mas se foi com o EntityTypeConfiguration do Code Firt, tenta algo assim:
// inicio do seu codigo
this.HasRequired(x => x.Department) .WithMany() .HasForeignKey(x => x.DepartmentId) .WillCascadeOnDelete(false);// fim do seu código
Atenção a última linha onde tem o parâmetro false.
Att, Vitor Hugo Salgado
- Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 11:17
-
Boa tarde,
Não sei como vc criou o seu mapeamento, mas se foi com o EntityTypeConfiguration do Code Firt, tenta algo assim:
// inicio do seu codigo
this.HasRequired(x => x.Department) .WithMany() .HasForeignKey(x => x.DepartmentId) .WillCascadeOnDelete(false);// fim do seu código
Atenção a última linha onde tem o parâmetro false.
Att, Vitor Hugo Salgado
Obrigado a todos pela ajuda ...todas as repostas foram uteis votei pra um abraços