Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [vb.net] classi e database
Forum - C# / VB.NET - [vb.net] classi e database

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
foralobo (Normal User)
Pro


Messaggi: 146
Iscritto: 30/11/2009

Segnala al moderatore
Postato alle 17:34
Mercoledì, 27/10/2010
la mia domanda è più che altro tecnica... sta alla base della programmazione ad oggetti creare delle classi. Ci siamo ma volte sembrerebbe che l'uso di una classe in una determinata circostanza sia superfluo...cmq non volgio dilungarmi troppo. voglio chiedere a voi esperti:

- prima di tutto: a volte si ha la necessità di creare una classe che poi non potrà essere riusata in altri programmi. Non so, ad esempio potremmo prendere in considerazione un database. Creo una classe per aprire quel database che uso per la contabilità. Tale classe mi fornisce metodi e proprietà riguardante quella tabella, mi da il saldo del cliente, le entrate le uscite etc...eliminato il database, che me ne faccio della classe?

domanda: in questi casi è bene costruire una classe oppure è un lavoro superfluo?

- secondo: tutta la pappardella iniziale per arrivare al punto database. Un altro esempio banale...Mettiamo che si abbia una tabella CLIENTI e dobbiamo gestire questi clienti. Aggiunta cliente, eliminazione, modifica etc..
in questo caso lavoriamo sul database direttamente ma se volessi creare una classe CLIENTE, che mi permetta la gestione di ogni cliente...come la potrei interfacciare con il database? mettiamo che  utilizzo un "dataset", già tramite questo (che x altro è un oggetto) io posso gestirmi i clienti.

domanda: quando è bene creare una classe?
Mi direte: sempre...ma nel caso specifico, per l'uso su database, quindi dove ci sono già i nomi specifici delle tabelle, le stringhe per le query che non posso generalizzare perché riguardano tali tabelle...come si lavora in questi casi?

spero di essermi spiegato.
grazie per i chiarimenti

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 19:56
Mercoledì, 27/10/2010

semplicemente quello che stai immaginando/cercando esiste già e si chiama ORM:

http://en.wikipedia.org/wiki/Object-relational_mapping

implementato in .net: Entity Framework

http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx
http://en.wikipedia.org/wiki/ADO.NET_Entity_Framework

PM Quote
Avatar
foralobo (Normal User)
Pro


Messaggi: 146
Iscritto: 30/11/2009

Segnala al moderatore
Postato alle 11:27
Giovedì, 28/10/2010
feazie hedo per la risposta...curiosità, ma questo ORM di cui parla c'entra qualcosa con il DataSet e il lavoro sul DataSet?

perchè sono consapevole che quello che ho scritto non è di facile comprensione considerando quello che vorrei spiegare


Grazie

inoltre vorrei sapere se è più conveniente lavorare con una classe che contenga i clienti e quindi eliminarli gestirli etc dalla classe e poi portare il tutto con su database oppure avorare direttamente du ldb...ma mi pare che quasto lo si faccia con il DataSet

Ultima modifica effettuata da foralobo il 28/10/2010 alle 11:45
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 11:49
Giovedì, 28/10/2010
Testo quotato

Postato originariamente da foralobo:

feazie hedo per la risposta...curiosità, ma questo ORM di cui parla c'entra qualcosa con il DataSet e il lavoro sul DataSet?

perchè sono consapevole che quello che ho scritto non è di facile comprensione considerando quello che vorrei spiegare
Grazie



più che altro in un ORM non esiste più il concetto di dataset tradizionale.
tutto si basa su classi dette mappers che fanno da tramite tra le tabelle/rows del database e gli oggetti dell'applicazione. Mi spiego meglio:

Immagina di avere 3 tabelle: Comuni, Province, Regioni.
riempite ovviamente con i dati italiani.

con entity framework potresti fare una cosa di questo genere:

Codice sorgente - presumibilmente C# / VB.NET

  1. Comune milano = Entities.Comuni.First(item => item.Nome == "Milano");
  2.  
  3. Console.WriteLine("Abitanti del comune di milano: " + milano.Abitanti);
  4.  
  5. Provincia provincia = milano.Provincia;
  6.  
  7. foreach(var comune in provincia.Comuni)
  8.     // Stampa i nomi dei comuni della provincia di milano e i loro abitanti
  9.     Console.WriteLine(comune.Nome + ": " + comune.Abitanti);
  10.  
  11. Regione regione = provincia.Regione;
  12.  
  13. foreach(var prov in regione)
  14.     // Stampa i nomi delle provincie della lombardia e le loro sigle
  15.     Console.WriteLine(prov.Nome + " (" + prov.Sigla + ")");



spero che queste 4 righe di codice siano più esplicative di qualsiasi link :)



PM Quote
Avatar
foralobo (Normal User)
Pro


Messaggi: 146
Iscritto: 30/11/2009

Segnala al moderatore
Postato alle 11:58
Giovedì, 28/10/2010
Testo quotato

Postato originariamente da HeDo:

Testo quotato

Postato originariamente da foralobo:

feazie hedo per la risposta...curiosità, ma questo ORM di cui parla c'entra qualcosa con il DataSet e il lavoro sul DataSet?

perchè sono consapevole che quello che ho scritto non è di facile comprensione considerando quello che vorrei spiegare
Grazie



più che altro in un ORM non esiste più il concetto di dataset tradizionale.
tutto si basa su classi dette mappers che fanno da tramite tra le tabelle/rows del database e gli oggetti dell'applicazione. Mi spiego meglio:

Immagina di avere 3 tabelle: Comuni, Province, Regioni.
riempite ovviamente con i dati italiani.

con entity framework potresti fare una cosa di questo genere:

Codice sorgente - presumibilmente C# / VB.NET

  1. Comune milano = Entities.Comuni.First(item => item.Nome == "Milano");
  2.  
  3. Console.WriteLine("Abitanti del comune di milano: " + milano.Abitanti);
  4.  
  5. Provincia provincia = milano.Provincia;
  6.  
  7. foreach(var comune in provincia.Comuni)
  8.     // Stampa i nomi dei comuni della provincia di milano e i loro abitanti
  9.     Console.WriteLine(comune.Nome + ": " + comune.Abitanti);
  10.  
  11. Regione regione = provincia.Regione;
  12.  
  13. foreach(var prov in regione)
  14.     // Stampa i nomi delle provincie della lombardia e le loro sigle
  15.     Console.WriteLine(prov.Nome + " (" + prov.Sigla + ")");



spero che queste 4 righe di codice siano più esplicative di qualsiasi link :)






capisco...però mi pare che tale codice sia rivolto sempre a questo database,...che ha queste tabelle...quindi non si tratta di una cosa generale..

o mi sbaglio??

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 12:09
Giovedì, 28/10/2010
Testo quotato

Postato originariamente da foralobo:
capisco...però mi pare che tale codice sia rivolto sempre a questo database,...che ha queste tabelle...quindi non si tratta di una cosa generale..

o mi sbaglio??



il concetto è che di ogni database ne generi una rappresentazione ad oggetti che ti crea il Model del db. Poi tu puoi interrogare il model utilizzando linq, metodi di estensione, etc... in modo del tutto trasparente dalle query sql del database :)

PM Quote
Avatar
foralobo (Normal User)
Pro


Messaggi: 146
Iscritto: 30/11/2009

Segnala al moderatore
Postato alle 12:18
Giovedì, 28/10/2010
Testo quotato

Postato originariamente da HeDo:

Testo quotato

Postato originariamente da foralobo:
capisco...però mi pare che tale codice sia rivolto sempre a questo database,...che ha queste tabelle...quindi non si tratta di una cosa generale..

o mi sbaglio??



il concetto è che di ogni database ne generi una rappresentazione ad oggetti che ti crea il Model del db. Poi tu puoi interrogare il model utilizzando linq, metodi di estensione, etc... in modo del tutto trasparente dalle query sql del database :)



1) capisco...ma anche con dataset mi potrei creare un modello del database...magari creandomi una classe apposta...

2) in ogni caso devo crearmi sempre un modello per ogni database?

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 12:23
Giovedì, 28/10/2010
Testo quotato

Postato originariamente da foralobo:

1) capisco...ma anche con dataset mi potrei creare un modello del database...magari creandomi una classe apposta...




si, quando hai 3 tabelle ce la fai, ma quando iniziano ad essere 100+ buona fortuna :)


Testo quotato

Postato originariamente da foralobo:
2) in ogni caso devo crearmi sempre un modello per ogni database?



il modello è quello che tu interroghi, l'utilizzo di ORM presuppone l'esistenza di un modello a classi dei dati, e quindi un insieme di oggetti interrogabili. La risposta è si.

PM Quote
Avatar
foralobo (Normal User)
Pro


Messaggi: 146
Iscritto: 30/11/2009

Segnala al moderatore
Postato alle 12:33
Giovedì, 28/10/2010
ti ringrazio HeDo sei stato veramente gentile (e prezioso)
cmq creandomi una classe che si basa su dataset credi che non possa raggiungere un discreto libello?

certo magari l'omr è nato per quello ed è già bello e pronto...

io cmq le interrogazioni le faccio tramite query

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo