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; }
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(); } }