Originariamente inviato da Valeria75_bis
Ho provato a gestire una semplice tabella del DB con una logica n-tier
Codice PHP:
WebUtente.cs
using System;
using System.Data;
public class WebUtente
{
private string _nome;
private string _cognome;
private string _mail;
private string _password;
public string Nome
{
get { return _nome; }
set { _nome = value; }
}
public string Cognome
{
get { return _cognome; }
set { _cognome = value; }
}
public string Mail
{
get { return _mail; }
set { _mail = value; }
}
public string Password
{
get { return _password; }
set { _password = value; }
}
}
WebUtentiCollection.cs
using System;
using System.Collections.Generic;
using System.Text;
public class WebUtentiCollection : List<WebUtente>
{
}
WebUtentiManager.cs
using System;
using System.Collections.Generic;
using System.Text;
public class WebUtentiManager
{
public WebUtentiCollection GetAllWebUtenti()
{
return GetAllWebUtenti(false);
}
public WebUtentiCollection GetAllWebUtenti(bool getUtenti)
{
// collection di utenti, dal DataLayer
WebUtentiData data = new WebUtentiData();
WebUtentiCollection utenti = data.GetAll();
//Perchè per accedere agli elementi della collection devo fare [i].NomeCampo?
//utenti[i].
return utenti;
}
}
WebUtentiData.cs
public class WebUtentiData
{
public WebUtentiCollection GetAll()
{
SqlHelper h = new SqlHelper();
WebUtentiCollection utenti = new WebUtentiCollection();
WebUtente utente;
using (SqlDataReader dr = h.ExecuteQuery("SELECT * FROM titles"))
{
string nomeOrdinal = dr.GetOrdinal("nome");
string cognomeOrdinal = dr.GetOrdinal("cognome");
string mailOrdinal = dr.GetOrdinal("mail");
while (dr.Read())
{
utente = new WebUtente();
utente.Nome = dr.GetString(nomeOrdinal);
utente.Cognome = dr.GetString(cognomeOrdinal);
utente.Mail = dr.GetString(mailOrdinal);
utenti.Add(utente);
}
}
return utenti;
}
}
I miei dubbi sono i seguenti (sperando cmq che la logica che ho creato, e postato sopra, sia corretta)
1) nell'esempio viene usato un oggetto SqlHelper, dove posso trovare il codice di questo oggetto?
2) la mia collection è vuota ....
public class WebUtentiCollection : List<WebUtente>
{
}
perchè?? cosa dovrei inserire qui?? (oppure va bene cosi???)
3) nella classe utentiManager, perchè per accedere agli elementi della collection devo fare [i].NomeCampo
(inoltre è giusta la collection come l'ho creata io (ovvero vuota)??? vedi punto 2.)
4) cosa devo inserire nella classe WebUtentiManager?? Se nella classe Data gestisco le interrogazioni al DB, nel Manager dovrei gestire la logica di business .... a livello teorico mi è chiaro, ma a livello pratico non saprei cosa gestire in questa classe, potreste farmi un semplice esempio pratico di implementazione all'interno del manager?
5) più che un dubbio è un consiglio: l'uso del datareader per accedere ad una SELECT * è corretto?? Oppure esiste una soluzione piu "performante" per records di grandi dimensioni?
Grazie infinite per la pazienza e per l'aiuto!