Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

glauco29

Armazenar retorno do banco em DataSet (C#)

Recommended Posts

Bom dia pessoal, estou com uma dúvida e gostaria de uma ajuda. Em meus sites feitos em ASP .NET (C#), eu trabalho criando classes para cada tabela, para quando retornar a pesquisa do banco eu armazeno no objeto (se for retornado apenas 1 linha) ou lista (se for retornado mais que 1 linha).

 

Na camada que crio o padrão do objeto tenho:

 

 

    [serializable]    public class AnoModeloTO    {        private int intid_ano_modelo;        private string strano_modelo;//crio as propriedades do objeto        public int id_ano_modelo        {            get { return intid_ano_modelo; }            set { intid_ano_modelo = value; }        }//crio as propriedades do objeto        public string ano_modelo        {            get { return strano_modelo; }            set { strano_modelo = value; }        }   }

Na camada de banco tenho:

 

 public class AnoModeloDAL    {        public AnoModeloDAL(IDataReader dr)        {            Load(dr);        }        public static AnoModeloTO Load(IDataReader dr)        {            AnoModeloTO objeto = new AnoModeloTO();            if (!dr.IsDBNull(dr.GetOrdinal("id_ano_modelo")))                objeto.id_ano_modelo = dr.GetInt32(dr.GetOrdinal("id_ano_modelo"));            else                objeto.id_ano_modelo = 0;            if (!dr.IsDBNull(dr.GetOrdinal("ano_modelo")))                objeto.ano_modelo = dr.GetString(dr.GetOrdinal("ano_modelo"));            else                objeto.ano_modelo = "";            return objeto;        }        public static List<AnoModeloTO> GetAll()        {            List<AnoModeloTO> lista = new List<AnoModeloTO>();            Database db = DatabaseFactory.CreateDatabase("STRING_CONNECTION");             try            {                string sql = "SELECT * FROM t_ano_modelo";                DbCommand cmd = db.GetSqlStringCommand(sql);//Ao invés de utilizar essa parte abaixo que armazena o retorno na lista (lista.Add(Load(dr))), quero saber como armazenar o retorno do banco em um DataSet ----------------------------------------------------                using (IDataReader dr = db.ExecuteReader(cmd))                {                    while (dr.Read())                    {                        lista.Add(Load(dr));                    }                }//----------------------------------------------------------------------            }            finally            {            }            return lista;        }    }

E na camada de negócios tenho:

 

 

    public class AnoModeloBLL    {        public static List<AnoModeloTO> GetAll()        {            return AnoModeloDAL.GetAll();        }    }

Até hoje, fiz meus sites utilizando o modelo acima (pq foi como aprendi), porém dá muito trabalho pq cada tabela que vou trabalhar tenho que criar uma classe padrão (a primeira postada), conversando com um colega meu, ele falou que no trampo deles eles usam DataSet para armazenar o retorno do banco ao invés de armazenar em um objeto ou lista pré-determinado por mim.

 

Minha pergunta é, como faria para ao invés de armazenar em um objeto ou lista, armazenar em um DataSet, dei uma lida na net, e vi que tem alguma coisa a fazer, pq estou usando DataReader.

 

Se alguém puder me ajudar, ficarei muito grato, pois isso vai ser 20 mãos na roda.....

 

Obrigado.

 

 

Jesus te ama.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conselho: pula fora de DataSet.

 

Se seu banco for SQL Server ou Oracle utilize Linq to Sql ou Linq to Entities, se for outro veja se já tem um provider pro Linq to Entities, ele faz praticamente isso que você fez manual, só que sozinho claro.

 

Eu trabalho de forma parecida, mas utilize o MyGenerate para gerar minhas classes, basta você criar um template que ele conecta no banco, você seleciona as tabelas e os campos e ele cria a classe.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.