Usare collection per semplice gestione anagrafiche

venerdì 04 luglio 2008 - 12.29

Amodio Profilo | Expert

salve a tutti
il mio capo è in vacanza, dovrei creare una gestione anagrafica
mi ha incaricato di usare le collection
il mio dubbio è che avendo creato una classe:
public class CLS_Anagrafica properties... public function inserisci... public function modifica... end class
questa classe inserisce, modific ecc, il tutto senza usare le collection
in quanto gestisce una anagrafica alla volta (come da richieste)
per usare le collection come dovrei modificare il tutto?

grazie per le info

alx_81 Profilo | Guru

>salve a tutti
Ciao!

>per usare le collection come dovrei modificare il tutto?
Considera che la classe che hai scritto è l'entità e quindi corrisponde ad una riga della tabella. Per fare in modo di gestire a collection, devi creare una classe base da cui la tua eredita. La classe base espone una proprietà (ad esempio Rows) che è di tipo List(Of CLS_Anagrafica). Inoltre avrai i classici due metodi di select (quello che ricava tutto e quello col filtro) che lavorano direttamente sulla collection ed i metodi di insert/update, che cicleranno la proprietà List Of CLS_Anagrafica, lanciando i metodi di insert update dell'entità.
Questo a grandi linee.. Intanto guardati questo link sui generics:

C#
http://msdn.microsoft.com/it-it/library/512aeb7t(VS.80).aspx

VB.NET
http://msdn.microsoft.com/en-us/library/w256ka79.aspx

List(Of T)
http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

>grazie per le info
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Amodio Profilo | Expert

sei stato gentilissimo
sono già allo studio


forse ti chiederò troppo
avresti un esempio di progetto che utilizza appunto collection e anagrafiche?
in questo modo posso associare l'esempio ad una base reale

alx_81 Profilo | Guru

>sei stato gentilissimo
>sono già allo studio
>
>
>forse ti chiederò troppo
>avresti un esempio di progetto che utilizza appunto collection
>e anagrafiche?
Diciamo che ho un esempio di una classe fatta a collezioni.. ma non ciclo, ho i metodi di update per riga..
Però magari ti dà un'idea.. Stasera ti allego una classe, ok?
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Amodio Profilo | Expert

yahoo
grazie

alx_81 Profilo | Guru

Questa è la classe che gestisce la collection:

using System; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Collections.Generic; namespace MTC.DBObject { public class News : DBConnector { private List<NewsItem> _Items = new List<NewsItem>(); /// <summary> /// Ritorna un'istanza di NewsItem in base all'id /// </summary> public NewsItem Get(int IDNews) { using (SqlCommand objCmd = new SqlCommand("nomeproc", this.OpenConnection())) { objCmd.CommandType = CommandType.StoredProcedure; objCmd.Parameters.Add("@IDNews", SqlDbType.Int).Value = IDNews; SqlDataReader objDR = objCmd.ExecuteReader(); NewsItem ni = new NewsItem(); while (objDR.Read()) { ni.IDNews = Convert.ToInt32(objDR["IDNews"]); ni.Contenuto = objDR["Contenuto"].ToString(); ni.Titolo = objDR["Titolo"].ToString(); ni.Data = Convert.ToDateTime(objDR["Data"]); if (objDR["Foto"] is System.DBNull) { } else { ni.Foto = (byte[])objDR["Foto"]; } } this.CloseConnection(); if (ni != null) { return ni; } else { return null; } } } /// <summary> /// Ritorna le news in evidenza /// </summary> public List<NewsItem> GetInEvidenza() { using (SqlCommand objCmd = new SqlCommand("nomeproc", this.OpenConnection())) { objCmd.CommandType = CommandType.StoredProcedure; SqlDataReader objDR = objCmd.ExecuteReader(); // ricavo i dati dal db e li ciclo per riempire la collezione while (objDR.Read()) { NewsItem ni = new NewsItem(); ni.IDNews = Convert.ToInt32(objDR["IDNews"]); ni.Titolo = objDR["Titolo"].ToString(); ni.Abstract = objDR["Abstract"].ToString(); ni.Data = Convert.ToDateTime(objDR["Data"]); ni.Contenuto = objDR["Contenuto"].ToString(); ni.Foto = (byte[])objDR["Foto"]; } ni.Thumbnail = (byte[])objDR["Thumbnail"]; // aggiungo l'item alla collection this._Items.Add(ni); } this.CloseConnection(); if (this._Items != null && this._Items.Count > 0) {return this._Items;} else {return null;} } } } }

e questa è la Item, ovvero la riga del db (la tua riga di anagrafica):
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; namespace MTC.DBObject { public class NewsItem { private int _IDNews; private DateTime _Data; private String _Titolo; private String _Abstract; private byte[] _Foto; private byte[] _Thumbnail; private String _Contenuto; public int IDNews { get { return _IDNews; } set { _IDNews = value; } } public DateTime Data { get { return _Data; } set { _Data = value; } } public String Titolo { get { return _Titolo; } set { _Titolo = value; } } public String Abstract { get { return _Abstract; } set { _Abstract = value; } } public byte[] Foto { get { return _Foto; } set { _Foto = value; } } public byte[] Thumbnail { get { return _Thumbnail; } set { _Thumbnail = value; } } public String Contenuto { get { return _Contenuto; } set { _Contenuto = value; } } } }

Quest'ultima ha solo le proprietà che mappano l'oggetto, quindi i campi.
Spero possa esserti di aiuto, ciao!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5