Usuário com melhor resposta
Enviar um table ou uma colecttion para o banco

Pergunta
-
Tenho o seguinte na camada negócios para recuperar dados da tabela tblItensProtocolo:
public ItemProtocoloColecao ConsultarPorProtocolo(int idProtocolo) { try { //CRIAR UMA NOVA COLECAO DE ITEMPROTOCOLO ItemProtocoloColecao itemProtocoloColecao = new ItemProtocoloColecao(); //LIMPAR PARAMETROS acessoDadosSqlServer.LimparParametros(); //ADICIONAR PARAMETROS acessoDadosSqlServer.AdicionarParametros("@idProtocolo", idProtocolo); //CRIAR UM DATATABLE DataTable dataTableItemProtocolo = acessoDadosSqlServer.ExecutarConsulta(CommandType.StoredProcedure, "dbo.uspItensProtocoloConsultarPorProtocoloID"); // foreach (DataRow linha in dataTableItemProtocolo.Rows) { //CRIAR UM NOVO OBJETO ITEM PROTOCOLO ItemProcotolo itemProtocolo = new ItemProcotolo(); //ADICIONAR VALORES EM SEUS ATRIBUTOS // itemProtocolo.idProtocolo = Convert.ToInt32(linha["idProtocolo"]); itemProtocolo.Item = Convert.ToInt32(linha["Item"]); itemProtocolo.idTipoDoc = Convert.ToInt32(linha["idTipoDoc"]); itemProtocolo.Descricao = Convert.ToString(linha["descricao"]); itemProtocolo.NumeroDoc = Convert.ToString(linha["NumeroDoc"]); itemProtocolo.DescricaoDoc = Convert.ToString(linha["DescricaoDoc"]); itemProtocoloColecao.Add(itemProtocolo); } return itemProtocoloColecao; } catch (Exception exception) { throw new Exception("Não foi possível consultar Coleção de Itens por protocolo! Detalhes :" + exception.Message); } }
Como seria para eu fazer o inverso? Quero dizer. Como enviar uma collection ou uma table para o banco só com uma conexão. Procurei em vários sites e o que mais se aproximou foi a Tabela de Parametros. Mas ainda não entendi bem o seu funcionamento.
Expl.: Entendi que posso recuperar os dados dessa tabela. Porém não sei como fazer para populala - já que ao que parece ela é recriada a cada conexão, perdendo assim os dados da conexão anterior. Então como fazer para persistir os dados e depois enviá-los para a tabela definitiva?
Atenciosamente,
Marcello M. Mariano
Respostas
-
Marcello,
Na indicação acima você obteve os dados e "populou" uma entidade chamada "ItemProtocolo".
Dependendo de como você pretende estruturar sua camada de negócios, você poderá criar um método para "Incluir", um para "Alterar" e outro para "Excluir" os dados diretamente no banco de dados, utilizando outra classe que pode ser herdada para manipular uma ou mais Entidades.
O conceito é complexo até você começar a aplicar na prática "o que é o que".
Segue abaixo alguns artigos interessantes que podem ajudar você a definir uma estrutura para sua aplicação:
https://msdn.microsoft.com/pt-br/library/dd756361(v=vs.110).aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Eduardo.Romero quarta-feira, 25 de março de 2015 20:08
Todas as Respostas
-
Marcello,
Sinceramente acredito que a sua dúvida esteja mais relacionada com uma falta de entendimento na forma de acessar um banco de dados, do que propriamente inserir ou manipular dados no banco.
É isso?
Se você deseja popular a tabela através da sua aplicação, teoricamente você tem que acessar o banco de dados de dentor da aplicação e fazer uso do comando Insert para enviar a relação de dados.
Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-
Marcello,
De fato, o parâmetro do tipo tabela será criado a cada conexão, porém, ao utilizar esse tipo de parâmetro na sua procedure, você terá a possibilidade de informar o conteúdo da tabela através de um list ou datatable que já esteja populado na sua aplicação.
O link a seguir contém um exemplo de utilização deste tipo de parâmetro:
http://www.mssqltips.com/sqlservertip/2112/table-value-parameters-in-sql-server-2008-and-net-c/
Ao utilizar esse tipo de parâmetro na sua procedure, você terá a possibilidade de informar o conteudo da tabela através de um list ou datatable que já esteja populado na sua aplicação
Espero que ajude! Luiz Phellipe
-
Marcello,
Na indicação acima você obteve os dados e "populou" uma entidade chamada "ItemProtocolo".
Dependendo de como você pretende estruturar sua camada de negócios, você poderá criar um método para "Incluir", um para "Alterar" e outro para "Excluir" os dados diretamente no banco de dados, utilizando outra classe que pode ser herdada para manipular uma ou mais Entidades.
O conceito é complexo até você começar a aplicar na prática "o que é o que".
Segue abaixo alguns artigos interessantes que podem ajudar você a definir uma estrutura para sua aplicação:
https://msdn.microsoft.com/pt-br/library/dd756361(v=vs.110).aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Eduardo.Romero quarta-feira, 25 de março de 2015 20:08