Oppure

Loading
27/10/10 15:34
foralobo
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
aaa
27/10/10 17:56
HeDo

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

en.wikipedia.org/wiki/…

implementato in .net: Entity Framework

msdn.microsoft.com/en-us/library/…(VS.80).aspx
en.wikipedia.org/wiki/…
aaa
28/10/10 9:27
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

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 28/10/10 9:45
aaa
28/10/10 9:49
HeDo
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:


Comune milano = Entities.Comuni.First(item => item.Nome == "Milano");

Console.WriteLine("Abitanti del comune di milano: " + milano.Abitanti);

Provincia provincia = milano.Provincia;

foreach(var comune in provincia.Comuni)
    // Stampa i nomi dei comuni della provincia di milano e i loro abitanti
    Console.WriteLine(comune.Nome + ": " + comune.Abitanti);

Regione regione = provincia.Regione;

foreach(var prov in regione)
    // Stampa i nomi delle provincie della lombardia e le loro sigle
    Console.WriteLine(prov.Nome + " (" + prov.Sigla + ")");



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


aaa
28/10/10 9:58
foralobo
Postato originariamente da HeDo:

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:


Comune milano = Entities.Comuni.First(item => item.Nome == "Milano");

Console.WriteLine("Abitanti del comune di milano: " + milano.Abitanti);

Provincia provincia = milano.Provincia;

foreach(var comune in provincia.Comuni)
    // Stampa i nomi dei comuni della provincia di milano e i loro abitanti
    Console.WriteLine(comune.Nome + ": " + comune.Abitanti);

Regione regione = provincia.Regione;

foreach(var prov in regione)
    // Stampa i nomi delle provincie della lombardia e le loro sigle
    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??
aaa
28/10/10 10:09
HeDo
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 :)
aaa
28/10/10 10:18
foralobo
Postato originariamente da HeDo:

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?
aaa
28/10/10 10:23
HeDo
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 :)


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.
aaa