I believe there has been a misinterpretation, I am posting the code to be better understood. I'm using a project for my EF Repository inside it I have:
Notice the doubt in //CompanySave.DATA_IND = DateTime.Now; This is possible.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Projeto.Financeiro.Dominio;
using Projeto.Financeiro.Dominio.contrato;
namespace Projeto.Financeiro.RepositorioEF
{
public class EmpresaRepositorioEF : IRepositorio<tb_empresa>
{
private readonly Contexto contexto;
public EmpresaRepositorioEF()
{
contexto = new Contexto();
}
//salvar ou altera o registro
public void SalvarRegistro(tb_empresa entidade)
{
if (entidade.IDEMPRESA > 0)
{
var empresaAlterar = contexto.Empresa.First(x => x.IDEMPRESA == entidade.IDEMPRESA);
empresaAlterar.RAZAO_SOCIAL = entidade.RAZAO_SOCIAL;
empresaAlterar.ENDERECO = entidade.ENDERECO;
empresaAlterar.BAIRRO = entidade.BAIRRO;
empresaAlterar.CIDADE = entidade.CIDADE;
empresaAlterar.IMAGEM_LOGO = entidade.IMAGEM_LOGO;
empresaAlterar.STATUS = entidade.STATUS;
empresaAlterar.DATA_ALT = entidade.DATA_ALT;
}
else
{
//empresaSalvar.DATA_IND = DateTime.Now; isso é possivel
contexto.Empresa.Add(entidade);
}
contexto.SaveChanges();
}
//excluir o registro
public void ExcluirRegistro(tb_empresa entidade)
{
var empresaExcluir = contexto.Empresa.First(x => x.IDEMPRESA == entidade.IDEMPRESA);
contexto.Set<tb_empresa>().Remove(empresaExcluir);
contexto.SaveChanges();
}
//listar por id
public tb_empresa ListarPorId(string id)
{
int idInt;
Int32.TryParse(id, out idInt);
return contexto.Empresa.First(x => x.IDEMPRESA == idInt);
}
//listar todos
public IEnumerable<tb_empresa> ListarTodos()
{
return contexto.Empresa;
}
}
}
My Entity
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Projeto.Financeiro.RepositorioEF
{
public interface IEntidade
{
DateTime DATA_ALTERACAO { get; set; }
DateTime DATA_INCLUSAO { get; set; }
}
}
My Context:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Projeto.Financeiro.Dominio;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.Core.Objects;
using System.Data.Entity.Validation;
namespace Projeto.Financeiro.RepositorioEF
{
public class Contexto:DbContext
{
public Contexto() : base("BancoDados")
{
}
public override int SaveChanges()
{
var Contexto = ((IObjectContextAdapter)this).ObjectContext;
IEnumerable<ObjectStateEntry> objectStateEntries =
from e in Contexto.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified)
where
e.IsRelationship == false &&
e.Entity != null &&
typeof(IEntidade).IsAssignableFrom(e.Entity.GetType())
select e;
var dataAtual = DateTime.Now;
foreach (var entry in objectStateEntries)
{
dynamic entityBase = entry.Entity;
if (entry.State == EntityState.Added || entityBase.DataCriacao == DateTime.MinValue)
{
entityBase.DATA_INCLUSAO = dataAtual;
}
entityBase.DATA_ALTERACAO = dataAtual;
}
try
{
return base.SaveChanges();
}
catch (DbEntityValidationException e)
{
foreach (var eve in e.EntityValidationErrors)
{
Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
eve.Entry.Entity.GetType().Name, eve.Entry.State);
foreach (var ve in eve.ValidationErrors)
{
Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
ve.PropertyName, ve.ErrorMessage);
}
}
throw;
}
}
public DbSet<tb_empresa> Banco { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}