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