entity-framework

Olá pessoal, meu nome é Mauricio Junior e hoje eu vou mostrar um código essencial para que seja colocado em seu projeto para não haver erros. O problema é simples, eu estou usando C# com Entity Framework e na tabela do database existe uma trigger que é executada toda vez que a tabela sofre alguma alteração ou inserção de um novo valor.

Como o meu código precisa atualizar a tabela, é necessário criar um OnModelCreating método override para que não tenha problemas de atualizar ou colocar novo valor.

É necessário colocar o nome da trigger que será executada para a tabela e assim não haverá erro quando o Entity Framework executar algo lá.

Então vou mostrar o código

Veja o código abaixo mostrando a classe com o DbContext.

using Application.Core.Entities;
using Microsoft.EntityFrameworkCore;


public class SqlContext : DbContext
{
    public SqlContext(DbContextOptions<SqlContext> options) : base(options)
    {

    }

    public DbSet<TaskItem> TaskItems { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<TaskItem>().ToTable(tb => tb.HasTrigger("UPDATE_COMPLETED_OPERATIONS"));
    }
}

Código 1 - DbContext

Nome que existe uma classe chamada TaskItems e é lá que eu preciso informar que existe uma trigger.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<TaskItem>().ToTable(tb => tb.HasTrigger("TRIGGER_NAME"));
}

Código 2 - Trigger

O código 2 mostra o que precisa fazer para informar que a trigger será executada na operação com a classe TaskItems. É o método override com o nome OnModelCreating e lá é bom colocar o modelBuilder com o nome da classe e o parâmetro tb.HasTrigger("Trigger_Name") com o nome da trigger existente no database.

Dessa forma o EF não vai retornar nenhum erro e vai funciona perfeitamente.

Espero que tenha gostado e qualquer dúvida pode entrar em contato comigo.

Informo que existem vários cursos dentro da plataforma ecode10.academy onde você pode aprender com os exemplos do dia a dia, passo a passo usando metodologia ativa de aprendizado (CBL).