none
RESOLVIDO - Override no método SaveChanges RRS feed

  • Pergunta

  • Fala pessoal!!!!!

    Estou seguindo alguns tutoriais para aprender a desenvolver em C#....   no caso, estou tentando aprender DDD e tal....

    Em um dos tutoriais, me deparei com uma substituição do método SaveChanges.

            public override int SaveChanges()
            {
                foreach(var entry in ChangeTracker.Entries().Where(entry => entry.Entity.GetType().GetProperty("DtRegistro") != null))
                {
                    if(entry.State == EntityState.Added)
                    {
                        entry.Property("DtRegistro").CurrentValue = DateTime.Now;
                    }
    
                    if(entry.State == EntityState.Modified)
                    {
                        entry.Property("DtRegistro").IsModified = false;
                    }
                }
                return base.SaveChanges();
            }

    Minha dúvida está em relação ao nome do campo....   minhas tabelas terão uma data de registro, mas para cada tabela o nome do campo mudará!!!

    Existe a possibilidade de passar uma variável ou mesmo um LIKE, algo do tipo, "Data" + "%Registro"

    Não sei se me fiz entender.....

    Desde já agradeço!!!!



    • Editado CrisMaleta01 quarta-feira, 24 de janeiro de 2018 00:28
    terça-feira, 23 de janeiro de 2018 17:57

Respostas

  • Como voce viu o "DtRegistro" é uma string. Voce pode fazer algo assim:

    string DtRegistro=funcaoBuscaCampoDataRegitro(Entidade);

    entry.Property(DtRegistro).CurrentValue = DateTime.Now;

    A unica coisa que voce tem que fazer é criar uma regra de como bustar a data de registro segundo a tabela (entidade)

    Por isso esses campos de auditoria sao iguais em todas as tabelas... dessa voce consegue centralizar as funcoes de auditoria.

    att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    terça-feira, 23 de janeiro de 2018 18:16
    Moderador

Todas as Respostas

  • Como voce viu o "DtRegistro" é uma string. Voce pode fazer algo assim:

    string DtRegistro=funcaoBuscaCampoDataRegitro(Entidade);

    entry.Property(DtRegistro).CurrentValue = DateTime.Now;

    A unica coisa que voce tem que fazer é criar uma regra de como bustar a data de registro segundo a tabela (entidade)

    Por isso esses campos de auditoria sao iguais em todas as tabelas... dessa voce consegue centralizar as funcoes de auditoria.

    att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    terça-feira, 23 de janeiro de 2018 18:16
    Moderador
  • Blz William!!!!

    Já percebi que a volta será gigante, só pra tratar uma coluna da tabela!!!

    Vou rever isso e deixar um nome genérico, como você comentou!!!!

    Obrigado pela dica!!!!!

    Abs!!!!

    terça-feira, 23 de janeiro de 2018 19:09