コード例 #1
0
        public static string[] GetListaDeForeignCmd(this TipoDatabase tipo, Type type)
        {
            var tabela         = type.GetTabela();
            var campos         = type.GetCampos();
            var listaDeRelacao = type.GetRelacoesGet();
            var foreigns       = new List <string>();

            foreach (var relacao in listaDeRelacao)
            {
                var camposProp = relacao.OwnerProp.PropertyType.GetCampos();
                var camposRel  = RelacaoCampos.GetRelacaoCampos(relacao.Campos);

                string   table  = tabela.Nome;
                string[] fields = camposRel
                                  .ConvertAll(x => campos.FirstOrDefault(c => c.Atributo == x.Atributo).Nome).ToArray();

                string   tableRel  = relacao.OwnerProp.PropertyType.GetTabela().Nome;
                string[] fieldsRel = camposRel
                                     .ConvertAll(x => camposProp.FirstOrDefault(c => c.Atributo == x.AtributoRel).Nome).ToArray();

                var foreign = tipo.GetForeignKey(table, fields, tableRel, fieldsRel);
                if (!string.IsNullOrEmpty(foreign))
                {
                    foreigns.Add(foreign);
                }
            }

            return(foreigns.ToArray());
        }
コード例 #2
0
        private static object GetRelacao(this IAbstractDataContext context, Type type, RelacaoAttribute relacao, bool inRelacao, TipoDatabase tipoDatabase)
        {
            if (relacao == null)
            {
                return(null);
            }

            var campos = RelacaoCampos.GetRelacaoCampos(relacao.Campos);
            var wheres = new List <string>();

            foreach (var campo in campos)
            {
                var value = relacao.OwnerObj.GetInstancePropOrField(campo.AtributoRel);
                wheres.Add($"{campo.Atributo} = {tipoDatabase.GetValueStr(value)}");
            }

            if (type is IList)
            {
                return(context.GetLista(type, string.Join(" and ", wheres), inRelacao));
            }
            else if (type is object)
            {
                return(context.GetObjeto(type, string.Join(" and ", wheres)));
            }

            return(null);
        }
コード例 #3
0
        public static string[] GetListaDeDropForeignCmd(this TipoDatabase tipo, Type type)
        {
            var tabela         = type.GetTabela();
            var listaDeRelacao = type.GetRelacoesGet();
            var foreigns       = new List <string>();

            foreach (var relacao in listaDeRelacao)
            {
                var camposRel = RelacaoCampos.GetRelacaoCampos(relacao.Campos);

                string table    = tabela.Nome;
                string tableRel = relacao.OwnerProp.PropertyType.GetTabela().Nome;

                var foreign = tipo.GetDropForeignKey(table, tableRel);
                if (!string.IsNullOrEmpty(foreign))
                {
                    foreigns.Add(foreign);
                }
            }

            return(foreigns.ToArray());
        }