Example #1
0
 public Dicionario(Type tipo)
 {
     if (!typeof(Entidade).IsAssignableFrom(tipo))
     {
         throw new NaoSeraPossivelCriarUmDicionarioDeUmObjetoQueNaoHerdeObjetoBancoException();
     }
     _tipo = tipo;
     _nome = DataAnnotationHelper.ConsultarNomeDaTabela(tipo);
     Alias = tipo.Name;
     _possuiReferencial = ObjetoPossuiOutroObjetoReferenciado(tipo);
     _mapa = (_possuiReferencial)
                         ? MapaItemDicionarioBuilder.CriarMapaBuilder(tipo)
                         : null;
     if (_mapa != null)
     {
         Alias = tipo.Name;
         _nome = _mapa.NomeDaTabela;
     }
     if (string.Equals(Nome, Alias) || string.IsNullOrEmpty(Alias))
     {
         Alias = null;
     }
     _possuiCamposFilhos = false;
 }
Example #2
0
        private void CarregarCamposDaTabela()
        {
            var itens = (_possuiReferencial)
                                ? MapaItemDicionarioBuilder.ConsultarItensDicionario(_mapa, _tipo)
                                : ItemDicionarioBuilder.ConsultarItensDicionario(_tipo);

            _quantidade = 0;
            _quantidadeCamposNaChave = 0;
            _possuiCamposFilhos      = false;

            foreach (var item in itens)
            {
                if (string.Equals(item.Nome, "EstadoEntidade"))
                {
                    continue;
                }

                if (item.Mapeado)
                {
                    _quantidade++;
                    _itens.Add(item.Nome, item);
                    _propriedades[item.Propriedade.Name] = item;
                }
                else
                {
                    _itensNaoMapeados.Add(item.Nome, item);
                    _propriedadesNaoMapeadas[item.Propriedade.Name] = item;
                }
                if (item.Chave)
                {
                    _chaves[item.Nome] = item;
                    _quantidadeCamposNaChave++;
                }
                if (CampoFilho(item))
                {
                    _possuiCamposFilhos = true;
                }
            }

            if (_quantidade == 0)
            {
                throw new TabelaNaoPossuiInformacoesDeCamposDaTabelaException();
            }

            _autoIncremento = OpcoesAutoIncremento.Nenhum;

            var camposIdentity = itens.Count(i => i.OpcaoGeracao == Incremento.Identity);

            if (camposIdentity > 0)
            {
                if (camposIdentity > 1)
                {
                    throw new DicionarioNaoSuportaMultiplosCamposAutoIncrementoException();
                }
                _autoIncremento = OpcoesAutoIncremento.Identity;
            }

            var camposAgrupados = itens.Count(i => i.OpcaoGeracao == Incremento.Calculado);

            if (camposAgrupados > 0)
            {
                if (camposAgrupados > 1)
                {
                    throw new DicionarioNaoSuportaMultiplosCamposAutoIncrementoException();
                }
                _autoIncremento = OpcoesAutoIncremento.Calculado;
            }

            if ((camposIdentity > 0) && (camposAgrupados > 0))
            {
                throw new DicionarioNaoSuportaMultiplosCamposAutoIncrementoException();
            }
        }