Ricerca
 Italiano (Italia) English (United States)
Registrazione
Accedi
DotNetWork Forums
[vb2008] Database e Linq
Ultimo Post 27 nov 2009 10.46 by Hidden. 4 Risposte.
Stampa immediata
Ordina:
PrevPrev ProssimoProssimo
Non sei autorizzato ad inviare una risposta.
AutoreMessaggiRisolto

Posts:469

--
26 nov 2009 15.01 
Salve ragazzi volevo chiedere delle informazioni che al momento non mi sono per niente chiare. Ho fatto qualche ricerca in internet e anche se ho imparato alcune cose comunque non si è dissipato il mio dubbio.
Il mio problema è: come si utilizza Linq nel caso di un database mdf oppure access?

Es attualmente io per utilizzare i database spesso utilizzo in linea di massima questo sistema.

Dim connectionstring as string="Stringa di connessione di oledb o odbc o sqlserver"
dim Query as string ="Query da applicare"
Dim command as new OledbCommand(Query)
Using connnection as new oledbconnection(connectionstring)
command.connection= connection
connection.open
dim reader as oledbDatareader= command.executereader
miadatatable.load(reader)
reader.close
connectio.close
end using


In questo modo io mi carico i dati di un database in un datatable sulla quale poi opero. Spesso se commetto errori nella query me ne accorgo solo dopo che è stato lanciato il programma.
Per cancellare dei dati in un database o modificare o fare altro il principio è lo stesso.
Ma con Linq come funziona la cosa?
Devo trasformare il mio database in una classe?
Come comunica con il database o il server?

Mi potreste dare informazioni in merito oppure consigliarmi qualche tutorial pratico, ho un bel pò di confusione in testa.

Grazie per il vostro aiuto!

Posts:496

--
26 nov 2009 15.32 
Puoi partire da qui:
http://msdn.microsoft.com/it-it/library/bb399572.aspx
E leggere in particolare riguardo alla tecnologia Linq to Enities. Io lo ho adoperata e mi sono dimenticato che esistono le query su sql server
Anzi ci sono ma non servono più..
Rudy Azzan

Posts:469

--
27 nov 2009 07.30 
Chiedo scusa se forse posso sembrare cocciuto ma ho gia letto una miriade di tutorial ma una cosa che mi manca, diciamo il tassello per completare il mio quadro e per dargli forma è capire

Con Linq come faccio a connettermi al database?
Con Linq posso lanciare anche una query di aggiornamento, accodamento, eliminazione, unione, oppure serve solo per query di selezione e poi per tutte le altre operazioni bisogna utilizzare i metodi classici con i command?

Domanda ma se utilizzo linq per le mie query il mio programma non rallenta?

Con il metodo che io utilizzo tramita un command e un datareader mi importa in una mia datatable i mie dati già filtrati. Es. Ho una tabella clienti con 5000 record io volgio sapere solo quelli della provincia di roma con Linq sono costretto a caricarmi prima tutti i dati e quindi un dispendio di tempo e poi applico la query. Come faccio io invece invio direttamente la query e mi ritrovo nella mia datatable attraverso un datareader i dati filtrati es 100 record, risparmiandomi di caricarmi comunque tutti e 5000 record.

Sicuramente i dubbi che ho sono dovuti alla mia totale ignoranza in argomento.

Se qualcuno ha delle indicazioni specifiche per questi miei dubbi sarò lieto di accettarle nel frattempo mi studierò l'articolo del link che mi hai suggerito

Grazie per il vostro supporto.

Posts:496

--
27 nov 2009 09.42 
Allora, vediamo di andare in ordine:

--Con Linq come faccio a connettermi al database?

R: Te la faccio breve; Per prima cosa aggiungi un nuovo item al tuo progetto ADO.NET Entity data model, segui tutto il wizard, da un nome alla entiry connection quando te lo chiede. Dopo il wizard hai tutti gli oggetti che mappano il db a disposizione. Per creare una connessione nel codice, dichiai una "connessione = new NomeEntityConnection" e sei connesso (quando usi le collezioni, ma per te è trasparente).

--Con Linq posso lanciare anche una query di aggiornamento, accodamento, eliminazione, unione, oppure serve solo per query di selezione e poi per tutte le altre operazioni bisogna utilizzare i metodi classici con i command?

R: Niente di tutto ciò tu hai solo una collezione di oggetti. Quello che aggiungi, elimini, modifichi di questi oggetti (Entities) viene riportato sul db automaticamente quando chiami connessione.SaveChanges()

--Domanda ma se utilizzo linq per le mie query il mio programma non rallenta?

R: No, può anche velocizzarsi invece, dipende dal tipo di complessità e dal numero di oggetti coinvolti nelle funzioni linq che usi.

--Con il metodo che io utilizzo tramita un command e un datareader mi importa in una mia datatable i mie dati già filtrati. Es. Ho una tabella clienti con 5000 record io volgio sapere solo quelli della provincia di roma con Linq sono costretto a caricarmi prima tutti i dati e quindi un dispendio di tempo e poi applico la query. Come faccio io invece invio direttamente la query e mi ritrovo nella mia datatable attraverso un datareader i dati filtrati es 100 record, risparmiandomi di caricarmi comunque tutti e 5000 record.

R: Non sei costretto a caricarti niente, si arragia il sig. Linq per te. Quando usi il metodo linq Es.: .Where per filtrare una collezione, i dati vengono recuperati solo quando utilizzi effettivamante la collezione, non quando dichiari l'operazione di filtro, e ti viene recuperato solo in risultato della where, non tutto il mondo.

--Sicuramente i dubbi che ho sono dovuti alla mia totale ignoranza in argomento.
--Se qualcuno ha delle indicazioni specifiche per questi miei dubbi sarò lieto di accettarle nel frattempo mi studierò l'articolo del link che mi hai suggerito
--Grazie per il vostro supporto.

R: Leggiti il mio link e fai delle prove, vedrai che è più facile a farsi che a dirsi. Se vuoi prenditi un libro, che merita l'argomento, soprattutto con l'avvento del framework 4.0 che vengono introdotte nuove e utili features. E dimenticati di SQL Server (o qualsiasi altro DB), perchè non server più
Anzi il tuo codice funziona e non  cambia, per qualiasi db tu voglia usare .
Rudy Azzan

Posts:469

--
27 nov 2009 10.46 
Uhao quindi se ho capito bene io utilizzando Ado.net Entity
e associando ai miei controlli, quindi in un certo senso facendo il bindig del mio controllo a Entity nel momendo in cui lo modifico per aggiornare il tutto sul mio database basta che mi richiamo il metodo SaveChanges della connessione.

Per quanto riguarda la velocità in realtà il principio è lo stesso utilizzando il command con un datareader anche se lo dichiaro lui non carica i dati fino a che non li utilizzo e per di più mi carica solo quelli che gli chiedo io.

Ora mi comincia a piacere.

In più mi sembra di aver capito che il mio codice non cambia anche se cambia il database. Mi spiego ho fatto un programma che utilizza un database access attraverso Ado.net Entity dopo imparo SqlServer voglio migrare il database da access a sqlserver non devo cambiare il codice del mio programma ma ben si devo solo modificare l'Entity?

Questo mi piace ancora di più.

Grazie per la tua utile e semplice spiegazione che mi ha chiarito molte idee. Comunque sto già seguendo il tuo consiglio infatti ho già cominciato a studiare il tutorial che mi ha suggerito è fin ora mi sembra tutto abbastanza chiaro.

Grazie
Non sei autorizzato ad inviare una risposta.

Active Forums 4.1
       
Articoli Pubblicati
Fritto Misto - Classi di uso comune (parte 5)
Helper: Eccezioni personalizzate e Messaggi compositi
2007/10/27 | Autore: Sabrina Cosolo
Ereditarietà applicata ai controlli
Creazione di una combobox che mostra immagini al posto del testo
2008/07/06 | Autore: Andrea Zingoni
Memorizzare immagini in SQL Server
un'immagine per la memorizzazione su un campo Image di SQL Server e viceversa
2007/09/04 | Autore: Sabrina Cosolo
Miniguida alla OOP con il .NET Framework- Parte II
Le Classi e l'Incapsulamento.
2008/10/09 | Autore: Alberto De Luca 
Copiare dati fra Database con ADO.Net
Da Qui a Li e da Li a Qui usando OleDb e Access
2009/02/14 | Autore: Sabrina Cosolo
Iniziare da zero con Visual Studio
Introduzione a .NET e Visual Studio
2007/07/29 | Autore: Sabrina Cosolo
Fritto Misto - Classi di uso comune(parte 3)
Helper: Due interfacce per implementare classi Entity
2007/10/22 | Autore: Sabrina Cosolo
Briciole di ereditarietà
Come aggiungere ulteriori funzionalità alla TreeView personalizzata
2009/06/05 | Autore: Francesca Mazzoni
   Stampa     
Home|Community|Contenuti|Forums|Blogs|Workshops
© 2007-2010 by DotNetWork .:. Condizioni d'uso .:. Privacy .:. Accedi .:.