public void SeSolicitarDuasVezesOMesmoDicionarioDeveTrazerAMesmaInstancia() { var dicionario = DicionarioCache.Consultar(typeof(ObjetoDeTestes)); DicionarioCache.Consultar(typeof(ObjetoDeTestes)) .Should().Be(dicionario); }
public void AdicionarRegistro <TObjeto>(TObjeto registro) where TObjeto : IEntidade { var tipo = typeof(TObjeto); var dicionario = DicionarioCache.Consultar(tipo); var tabela = ConsultarTabelaDoBancoDeDadosVirtual(tipo); AdicionarRegistro(dicionario, tabela, registro); }
private object CriarNovoRepositorio <TObjeto>() where TObjeto : class, IEntidade { var tipoRepositorio = typeof(Repositorio <>); var tipoGenerico = tipoRepositorio.MakeGenericType(typeof(TObjeto)); var dicionario = DicionarioCache.Consultar(typeof(TObjeto)); var persistencia = new Persistencia <TObjeto>(dicionario); return((IRepositorio)Activator.CreateInstance(tipoGenerico, this, persistencia)); }
private void CriarNovoRepositorio <TObjeto>(string tipo) where TObjeto : IEntidade { var tipoRepositorio = typeof(RepositorioFake <>); var tipoGenerico = tipoRepositorio.MakeGenericType(typeof(TObjeto)); var dicionario = DicionarioCache.Consultar(typeof(TObjeto)); var persistencia = new PersistenciaFake <TObjeto>(dicionario); Repositorios.Add(tipo, (IRepositorio)Activator.CreateInstance(tipoGenerico, this, persistencia)); _persistencias.Add(tipo, persistencia); }
private void AdicionarRegistros(Type tipo, IEnumerable registros, Action <object> atualizar = null) { var dicionario = DicionarioCache.Consultar(tipo); var tabela = ConsultarTabelaDoBancoDeDadosVirtual(tipo); foreach (var registro in registros) { atualizar?.Invoke(registro); AdicionarRegistro(dicionario, tabela, registro); } }
private object CriarNovoRepositorio(Type tipo) { var tipoRepositorio = typeof(Repositorio <>); var repositorioGenerico = tipoRepositorio.MakeGenericType(tipo); var tipoPersistencia = typeof(Persistencia <>); var persistenciaGenerica = tipoPersistencia.MakeGenericType(tipo); var dicionario = DicionarioCache.Consultar(tipo); var persistencia = Activator.CreateInstance(persistenciaGenerica, dicionario); return(Activator.CreateInstance(repositorioGenerico, this, persistencia)); }
private void CriarNovoRepositorio(string nome, Type tipo) { var tipoRepositorio = typeof(Repositorio <>); var repositorioGenerico = tipoRepositorio.MakeGenericType(tipo); var tipoPersistencia = typeof(Persistencia <>); var persistenciaGenerica = tipoPersistencia.MakeGenericType(tipo); var dicionario = DicionarioCache.Consultar(tipo); var persistencia = Activator.CreateInstance(persistenciaGenerica, dicionario); var repositorio = Activator.CreateInstance(repositorioGenerico, this, persistencia); Repositorios.Add(nome, repositorio); }
public DataTable ConsultarTabelaDoBancoDeDadosVirtual(Type tipo, string nomeTabela = null) { var dicionario = DicionarioCache.Consultar(tipo); var nome = nomeTabela ?? dicionario.Nome; if (!BancoDeDadosVirtual.Tables.Contains(nome)) { var tabela = DataTableBuilder.CriarDataTable(dicionario); tabela.TableName = nome; BancoDeDadosVirtual.Tables.Add(tabela); } return(BancoDeDadosVirtual.Tables[nome]); }
private void CriarNovoRepositorio(Type tipo) { var tipoRepositorio = typeof(RepositorioFake <>); var repositorioGenerico = tipoRepositorio.MakeGenericType(tipo); var tipoPersistencia = typeof(PersistenciaFake <>); var persistenciaGenerica = tipoPersistencia.MakeGenericType(tipo); var dicionario = DicionarioCache.Consultar(tipo); var tabela = ConsultarTabelaDoBancoDeDadosVirtual(tipo); var persistencia = Activator.CreateInstance(persistenciaGenerica, dicionario); var repositorio = Activator.CreateInstance(repositorioGenerico, this, persistencia, tabela); Repositorios.Add(tipo, repositorio); }
public IBuscador <TObjeto> Buscar <TObjeto>() where TObjeto : IEntidade { var buscador = (_buscador as IBuscador <TObjeto>); if (buscador != null) { return(buscador); } var dicionario = DicionarioCache.Consultar(typeof(TObjeto)); buscador = new Buscador <TObjeto>(Comando, dicionario, QueryBuilder, RelacionamentoBuilder); _buscador = buscador; return(buscador); }
private bool AsPropriedadesEstaoRelacionadas() { var campo = PropriedadeDoCampo.PropertyType; var model = PropriedadeDoModel.PropertyType; if (campo.IsGenericType && model.IsGenericType) { if ((campo.GetGenericTypeDefinition() != typeof(ICollection <>)) || (model.GetGenericTypeDefinition() != typeof(ICollection <>))) { return(false); } var dicionarioMapeado = DicionarioCache.Consultar(model.GetGenericArguments()[0]); return(dicionarioMapeado.OrigemMapa == campo.GetGenericArguments()[0]); } return(campo == model); }
public void SeSolicitar100000VezesParalelasOMesmoDicionarioDeveSerOMesmo() { Dicionario dicionario = null; var vezes = 1; Parallel.For(1, 100000, n => { if (dicionario == null) { dicionario = DicionarioCache.Consultar(typeof(ObjetoDeTestes)); } DicionarioCache.Consultar(typeof(ObjetoDeTestes)).Should().Be(dicionario); lock (MeuLock) vezes++; }); vezes.Should().Be(100000); }
private void CriarNovoRepositorio(string nome, Type tipo) { var tipoRepositorio = typeof(RepositorioFake <>); var repositorioGenerico = tipoRepositorio.MakeGenericType(tipo); var tipoPersistencia = typeof(PersistenciaFake <>); var persistenciaGenerica = tipoPersistencia.MakeGenericType(tipo); var dicionario = DicionarioCache.Consultar(tipo); var tabela = BancoDeDadosVirtual.Tables[tipo.Name] ?? DataTableBuilder.CriarDataTable(dicionario); if (!BancoDeDadosVirtual.Tables.Contains(tabela.TableName)) { BancoDeDadosVirtual.Tables.Add(tabela); } var persistencia = Activator.CreateInstance(persistenciaGenerica, dicionario); var repositorio = Activator.CreateInstance(repositorioGenerico, this, persistencia, tabela); Repositorios.Add(nome, repositorio); }
private static Relacionamento GerarScriptCarregamentoDescendente(PropertyInfo propriedade, string chaveEstrangeiraDaPropriedadeInversa, Type tipoPropriedade) { var tipo = propriedade.PropertyType; if ((!tipo.IsGenericType) || (tipo.GetGenericTypeDefinition() != typeof(ICollection <>))) { return(null); } var tipoGenerico = tipo.GetGenericArguments()[0]; var dicionarioTipoPropriedade = DicionarioCache.Consultar(tipoPropriedade.GetGenericArguments()[0]); if ((dicionarioTipoPropriedade.OrigemMapa != null) && (tipoGenerico == dicionarioTipoPropriedade.OrigemMapa)) { tipoGenerico = dicionarioTipoPropriedade.Tipo; } var dicionario = DicionarioCache.Consultar(tipoGenerico); return(new Relacionamento(TiposRelacionamento.Descendente, dicionario, chaveEstrangeiraDaPropriedadeInversa)); }
public static string ConsultarForeignKeyDaInverseProperty(PropertyInfo propriedade, Type tipo) { if ((!tipo.IsGenericType) || (tipo.GetGenericTypeDefinition() != typeof(ICollection <>))) { return(null); } var atributo = AttributeHelper.Consultar <PropriedadeDeLigacaoEstrangeiraAttribute>(propriedade); if (atributo == null) { var dicionario = DicionarioCache.Consultar(propriedade.DeclaringType); if (dicionario.OrigemMapa == null) { return(null); } var item = dicionario.ConsultarPorPropriedade(propriedade.Name); if (item.Ligacao != null) { return(string.Join(";", item.Ligacao.ChaveEstrangeira)); } } if (atributo == null) { return(null); } var tipoGenerico = tipo.GetGenericArguments()[0]; var dicionarioTipoPropriedade = DicionarioCache.Consultar(tipoGenerico); if (dicionarioTipoPropriedade.OrigemMapa != null) { tipoGenerico = dicionarioTipoPropriedade.OrigemMapa; } var foreign = tipoGenerico.GetProperty(atributo.Nome); if (foreign == null) { return(null); } return(ConsultarForeignKey(foreign)); }
private static Relacionamento CriarLigacaoAscendenteEntreModels(PropertyInfo propriedade, string chaveEstrangeira) { var dicionario = DicionarioCache.Consultar(propriedade.PropertyType); return(new Relacionamento(TiposRelacionamento.Ascendente, dicionario, chaveEstrangeira)); }