Informazioni su Linq to Sql e sql compaq

mercoledì 12 settembre 2012 - 16.24
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010  |  SQL Server 2008 R2

trinity Profilo | Guru

Ragazzi avrei delle domande da porre...

1) Linq to Sql accetta le stored procedure create su sql server?
2) E' più potente programma con Linq to Sql o il classico modo con command, i reader ecc?
3) Sql server Compaq accetta le join, le tabelle temporanee e le stored procedure?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

ciao

>1) Linq to Sql accetta le stored procedure create su sql server?
leggi qui http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

>2) E' più potente programma con Linq to Sql o il classico modo con command, i reader ecc?
leggi qui http://blogs.msdn.com/b/wriju/archive/2008/07/14/linq-to-sql-vs-ado-net-a-comparison.aspx

>3) Sql server Compaq accetta le join, le tabelle temporanee e le stored procedure?
Se intendi Compact, non credo che supporti le sp e i trigger
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

>
>>2) E' più potente programma con Linq to Sql o il classico modo con command, i reader ecc?
>leggi qui http://blogs.msdn.com/b/wriju/archive/2008/07/14/linq-to-sql-vs-ado-net-a-comparison.aspx

pertanto anche se non sono una cima nell'inglese se ho capito bene linq è molto potente + dell'ado net? ma sopratutto sintassi molto + semplificata
>
>>3) Sql server Compaq accetta le join, le tabelle temporanee e le stored procedure?
>Se intendi Compact, non credo che supporti le sp e i trigger

si era il compact :D

Grazie solo una cosetta come faccio a creare da vbnet il context che se non erro contiene tutte le classi che rappresentando la tabella del db e le relative stored ecc...

Un'altra domanda, lo using non si utilizza + con linq to sql, vero?Secondo ogni volta devo effettuare l'apertura del db quando eseguo delle query? O basta aprirlo una volta in una master page oppure in una windowsform primaria? Terzo se non viene + eseguito il db.open non c'è neanche il close + da eseguire, vero?

Ciao e scusa se faccio queste domande stupide ma voglio capire ed imparare
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>pertanto anche se non sono una cima nell'inglese se ho capito
>bene linq è molto potente + dell'ado net? ma sopratutto sintassi
>molto + semplificata
sì, ha dei vantaggi. Ma dipende sempre anche come usi ado.net. Ogni caso è da "misurare" e comunque linq to sql è un bel framework, comodo da usare.
Poi, se ne abusi, è molto complesso tenere il tuo database manutenuto bene (indici, statistiche, plan cache e quant'altro).

>Grazie solo una cosetta come faccio a creare da vbnet il context
>che se non erro contiene tutte le classi che rappresentando la
>tabella del db e le relative stored ecc...
fatti un tutorial di linq to sql: http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

>Un'altra domanda, lo using non si utilizza + con linq to sql,
>vero?Secondo ogni volta devo effettuare l'apertura del db quando
>eseguo delle query? O basta aprirlo una volta in una master page
>oppure in una windowsform primaria? Terzo se non viene + eseguito
>il db.open non c'è neanche il close + da eseguire, vero?
come sopra, leggiti bene la doc di linq to sql e troverai anche le best practices da seguire. Personalmente non utilizzo linq to sql.

>Ciao e scusa se faccio queste domande stupide ma voglio capire ed imparare
non c'è niente di cui chiedere scusa, ma le ultime due sforzati a ricavarle dalla documentazione, e vedrai che ne trarrai vantaggi, provando e riprovando si impara meglio non trovi?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

Scusa ma perché mi dici che poi sarà un problema per la manutenzione ecc del db? Io anche con ado net ho sempre eseguito manutenzione, backup ecc attraverso lsql management. Con il linq andrei ad eseguire le query classiche x gestire lettura e scrittura di dati. Molti miei colleghi mi hanno detto che linq To sql e linq To entity sarà il futuro meglio dell'adolescenza net. Se posso cbiedertelo come mai non utilizzi linq? Per motivi di prestazione oppure per motivi di abitudini e sintassi preferisci ado?
Ah dimenticavo cosa intendi per se abuso.? Ed il discorso degli indici?

Ciao

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Scusa ma perché mi dici che poi sarà un problema per la manutenzione
>ecc del db? Io anche con ado net ho sempre eseguito manutenzione,
>backup ecc attraverso lsql management.
La mia era una frase generale un po' rivolta a tutti questi tipi di accesso, dove parti "ordinato" ma poi, non sempre riesci a darti regole fisse, e cominci a comporre query dinamiche, il che poi complica il tuning lato db. Ma molto spesso il db è considerato erroneamente solo come un mero contenitore di dati.. ma è ben altro.

>Con il linq andrei ad
>eseguire le query classiche x gestire lettura e scrittura di
>dati. Molti miei colleghi mi hanno detto che linq To sql e linq
>To entity sarà il futuro meglio dell'adolescenza net. Se posso
>cbiedertelo come mai non utilizzi linq?
>Per motivi di prestazione
>oppure per motivi di abitudini e sintassi preferisci ado?
Perchè utilizzo le stored procedure e linq to sql perde di utilità. Preferisco isolare completamente il modello database a livello di sicurezza, ridurre il traffico di rete in chiamata (EXEC sp) e sfruttare al meglio la cache dei piani di esecuzione. Ma attenzione, non dico che non vada bene eh, dico che non sia il top nel mio caso.

>Ah dimenticavo cosa intendi per se abuso.? Ed il discorso degli indici?
Beh, un abuso tipico è:
CLIENTE: "Mi serve una griglia degli ordini3
SVILUPPATORE: "Quali sono i filtri?"
CLIENTE: "Tutti, variabili" (il che di solito equivale a NON NE HO IDEA)
SViLUPPATORE: "Ok" (il che equivale a fare valanghe di codice dinamico e sql creato al volo, che non è il massimo per sql, almeno non sempre).

In questo scenario, come fai a fare un piano di indicizzazione efficace? Non sai i filtri, non sai gli ordinamenti o le aggregazioni.. Insomma, perdi il controllo della cosa e appena hai un po' "troppi" dati in pancia, le query rallentano.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

Vero hai perfettamente ragione appunto un mio punto di forza è sempre analizzare e capire bene le problematiche he del cliente per concepire un db ad hoc con indici e variabile quasi "perfette". Il scusa ma io ho visto in rete esempi in cui linq To sql gestisce ossia richiama normalmente le storie procedure anzi mi sembra che il codice sia facilissimo. Ecco perché ho pensato di utilizzare linq To sql perché ho visto che gestisce le stored con parametri dato che anche io scindo la parte codice db da quella lato layout
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Vero hai perfettamente ragione appunto un mio punto di forza
>è sempre analizzare e capire bene le problematiche he del cliente
>per concepire un db ad hoc con indici e variabile quasi "perfette".
>Il scusa ma io ho visto in rete esempi in cui linq To sql gestisce
>ossia richiama normalmente le storie procedure anzi mi sembra
>che il codice sia facilissimo. Ecco perché ho pensato di utilizzare
>linq To sql perché ho visto che gestisce le stored con parametri
>dato che anche io scindo la parte codice db da quella lato layout
Diciamo che non è fatto apposta, non è nato per quello, quindi siccome la chiamata ad una sp, una volta fatta è fatta, non mi sono posto più di tanti problemi.
Comunque tienici aggiornati

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

Ok ti terrò aggiornato appena faccio dei test tra lin ed ado, comunque anche in ado net una volta chiamata la stored non puoi tornare indietro...oh aspetta se si usano le trasazioni si può fare un rallback? o sbaglio?
A proposito di questo argomento sai mica se linq le gestisce le trasazioni?

ho trovato un pò di link utili:

http://msdn.microsoft.com/it-it/library/bb386946.aspx
http://msdn.microsoft.com/it-it/library/bb386944.aspx (in questo mi lascia un pò da pensare perchè dice che linq fa parte della famiglia della tecnologia ado net, quindi la domanda che mi pongo l'utilizzo dei commanda e reader in ado net o della sintass linq to sql è solamente un discorso di sintassi, il motore è sempre ado)
http://msdn.microsoft.com/it-it/library/bb386995(v=VS.100)

http://msdn.microsoft.com/it-it/magazine/cc500645.aspx ( un esempio di test)

se trovi altri articoli li posto

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

trinity Profilo | Guru

Senti ale una domanda ma questo tipo di programmazione:

Dim conString = ConfigurationManager.ConnectionStrings("DB_GESTIONE_ALBERGHI") Dim strConnString As String = conString.ConnectionString Using db As New SqlConnection(strConnString) db.Open() Using sqlcmd As New SqlCommand("Get_Esenzione_categoria", db) sqlcmd.CommandType = CommandType.StoredProcedure sqlcmd.Parameters.AddWithValue("@codalbergo", SqlDbType.Int).Value = codalbergo Using sqldr As SqlDataReader = sqlcmd.ExecuteReader While sqldr.Read lbstruttura.Text = sqldr.GetSqlValue(1).Value lbcategoria.Text = sqldr.GetSqlValue(2).Value lbimposta_ita.Text = sqldr.GetSqlValue(3).Value lbimposta_str.Text = sqldr.GetSqlValue(4).Value End While End Using End Using End Using

lavora in maniera disconnessa dal server sql oppure in maniera connessa e diretta..perchè sapevo che ado net lavorava in maniera disconessa...questo tipo mio di codice fa così? Mi hanno fatto venire i dubbi alcuni miei colleghi

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>lavora in maniera disconnessa dal server sql oppure in maniera
>connessa e diretta..perchè sapevo che ado net lavorava in maniera
>disconessa...questo tipo mio di codice fa così? Mi hanno fatto
>venire i dubbi alcuni miei colleghi
Scegli tu se lavorare in modalità connessa o meno. Per farla breve:
CONNESSA: usi un datareader e fai tutto quello che serve senza mai chiudere la connessione, se non alla fine.
DISCONNESSA: dopo che hai letto il dato o "fillato" un dataset/datatable, usi l'oggetto, PRIMA chiudendo la connessione, per non lasciare impegnato il database.

La cosa migliore secondo me è consumare un datareader fino a che serve (solo per leggere, magari un tuo oggetto List of) e poi chiudi la connessione per usare i tuoi oggetti in maniera disconnessa.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

Guarda io per esempio ho sempre fatto in questa maniera per una lettura di n record o per un inserimento, in base anche a quello che tempo fa mi dicesti per le using:

lettura:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

inserimento:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ovviamente io non effettuo nessuno command.close oppure db.close oppure command.dispose, perchè se non erro lo using effettua tutto in automatico o sbaglio?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>ovviamente io non effettuo nessuno command.close oppure db.close
>oppure command.dispose, perchè se non erro lo using effettua
>tutto in automatico o sbaglio?
è corretto. Chiudiamo il thread?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

si :D
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5