tempest ha scritto:
quindi è meglio scrivere ogni volta connssione command datareader etc.


Sì, quanto meno per controllare le dispose (necessarie se non vuoi che l'applicazione venga giù con più di 3 utenti connessi  )

Personalmente uso un DAL basato sul pattern factory e sulle interfacce generiche (IDataReader, IDbConnection, IDbCommand, ecc.) attraverso il quale ho introdotto il concetto di "IDbSession" (poi implmentata per singoli db provider) che mi consente di snellire molto le operazioni di accesso al db.
In definitiva la uso più o meno in questo modo (parti di codice non significative omesse):

Nella business logic:

public static MyEntity GetMyEntity(int id)
{
 MyEntity myE = null;
 using (IDbSession dbsession = DbSessionFactory.CreateInstance())
 {
  dbsession.Open();
  myE = MyEntityDAL.GetMyEntity(id, dbsession);
 }
 return myE;
}


Nel DAL:

internal static MyEntity GetMyEntity(int id, IDbSession dbsession)
{
 MyEntity myE = null;
 string sql = "SELECT * FROM MyEntityTable WHERE MyEntityId = @MyEntityId";
 ParameterList pl = new ParameterList();
 pl.Add("@MyEntityId", id);
 using (IDbCommand cmd = dbsession.GetCommand(sql, pl))
 {
  using (IDataReader dr = dbsession.ExecuteRead(cmd))
  {
   if (dr.Read())
    myE = DataReader2MyEntity(dr);
  }
 }
 return myE;
}


Prima o poi magari pubblico il tutto, compreso il codice sorgente (alla fine sono meno di 10 classi)

Matteo Casati
GURU4.net
Matteo ha scritto:

Sì, quanto meno per controllare le dispose (necessarie se non vuoi che l'applicazione venga giù con più di 3 utenti connessi )


dai lo puoi fare anche se un metodo Helper crea per te il reader
 basta ricordarsi di chiudere tutto e poi il CommandBehavior c'è apposta

comunque metti tutto nel lab :D

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
31 messaggi dal 02 maggio 2001
www.blackice.it
non ti mettere a ridere ...ma cosè un DAL?


ciao
Stefano
e perche mai, prima di saperlo nemmeno io sapevo (che bel discorso)

il DAL è lo strato dell'applicazione che si occupa dell'accesso ai dati, comunica con il db ecc ecc.

non voglio dilungarmi oltre, in genere un applicazione viene suddivisa in 3 livelli, uno di presentazione, la tua pagina aspx, uno di logica business (ad e uno di accesso dati.

su aspitalia trovi articoli che trattano l'architettura.

Matteo ti ha fatto un ottimo esempio di DAL

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
nostromo ha scritto:
dai lo puoi fare anche se un metodo Helper crea per te il reader


Assolutamente sì. Ma il metodo helper deve ricevere tutto quel che gli serve, non gestire direttamente l'apertura di una connection!

basta ricordarsi di chiudere tutto


Certo, ma il problema nasce quando te lo dimentichi

Sinceramente continuo a non vedere il senso di un metodo helper che ti fa risparmiare 3 righe sì e no. Specie se il contro è quello di rischiare di lasciare connessioni aperte o command in memoria.

Matteo Casati
GURU4.net
tempest ha scritto:
non ti mettere a ridere


Ci mancherebbe! Anzi: chiedo scusa per averlo dato per scontato.

cosè un DAL?


Ti ha risposto Marco in modo esaustivo. Completo dicendo che "DAL" è l'acronimo del termine inglese Data Access Layer, ovvero "strato di accesso ai dati".

Ti consiglio la lettura dell'articolo di Riccardo che introduce in modo semplice e chiaro l'architettura a 3 livelli: Architettura del software: le applicazioni web a tre livelli e più in generale una lettura alla sezione "architettura (del software)" su ASPItalia: http://architettura.aspitalia.com/

Ciao!

Matteo Casati
GURU4.net
m.casati ha scritto:

Assolutamente sì. Ma il metodo helper deve ricevere tutto quel che gli serve, non gestire direttamente l'apertura di una connection!


su questo siamo d'accordo


Certo, ma il problema nasce quando te lo dimentichi


lol, c'è un vantaggio te ne accorgi quasi subito

Sinceramente continuo a non vedere il senso di un metodo helper che ti fa risparmiare 3 righe sì e no. Specie se il contro è quello di rischiare di lasciare connessioni aperte o command in memoria.


mha onestamente l'ho fatto eoni fa, ed il perché l'ho dimenticato, e non oso guardarci dentro finché non mi pagano, visto che funziona

ma ricordo a grandi linee che faceva parte di un architettura articolata, il mio primo tentativo di farmi un orm, un pò di reflection e montavo query e altro ancora.

ma ho un difetto quando scrivo il codice non commento e poi dimentico tutto...per questo il mio collega mi odia

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
nostromo ha scritto:
quando scrivo il codice non commento e poi dimentico tutto...per questo il mio collega mi odia


Povero Alessio, come NON lo invidio

Matteo Casati
GURU4.net

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.