5
I believe there was a misinterpretation, I’m posting the code to be better understood. I am using a project for my EF Repository is inside it I have:
Note the doubt in //companySalvar.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>();
}
}
}
I made the code change, see if it was clearer.
– Harry
Perfect. I just missed the
DbSet<Empresa>
. Where is it? Don’t forget to implement the interfaceIEntidade
inEmpresa
.– Leonel Sanches da Silva
I made the correction, is there the tb_company is the Ientidade with the correct fields, now how can I use these dates in my Empresarepositorioef? that’s all that’s left
– Harry
If
Empresa
implementsTEntidade
and you set the two date fields. just test. No need to change the repository. You can put a breakpoint inSaveChanges
, if you want to see how it works.– Leonel Sanches da Silva