Qual è l'ordine più efficace per imparare SQL Server, LINQ e Entity Framework?

2

Sto cercando di ottenere qualche consiglio su quale ordine dovrei imparare su SQL Server, LINQ e Entity Framework per poter lavorare meglio con ASP.NET Webforms e MVC.

Da quanto ho potuto imparare finora, molti raccomandano l'apprendimento di LINQ o Entity Framework prima di imparare SQL Server. Sembra inoltre che molte aziende stiano cercando persone con conoscenze in LINQ-to-SQL e Entity Framework senza menzionare SQL Server. Tuttavia, la mia comprensione è che LINQ-to-SQL e Entity Framework traducono il codice in query SQL Server, rendendo questo un approccio inadeguato.

Esiste un ordine corretto o migliore in cui apprendere queste tecnologie?

    
posta user1525474 29.10.2012 - 14:39
fonte

4 risposte

6

Hai ragione - dovresti imparare SQL Server prima o insieme alle altre abilità. Ho visto esplodere un sacco di query basate su entità, perché SQL Server non poteva gestire l'SQL che gli era stato passato.

Credo che dovremmo usare lo strumento giusto per qualsiasi lavoro. Spesso, SQL Server è lo strumento migliore per eseguire una determinata attività.

È vero che "chi ha un martello tratta tutto come un chiodo". Se si imparano solo le LINQ-to-Entities, occasionalmente si utilizzano LINQ-to-Entities quando si deve usare un proc memorizzato su SQL Server.

    
risposta data 29.10.2012 - 15:14
fonte
3

Penso che SQL e LINQ siano due cose diverse che devi imparare come programmatore .NET. Penso anche che tu possa impararli un po 'contemporaneamente, a seconda di ciò che sai sulle basi di DB e SQL già.

SQL sarà una conoscenza più portatile che, oltre al nuovo sviluppo, è possibile utilizzare su progetti legacy e attività di reporting. Quando c'è una mancanza di DBA (e ce ne sono quasi sempre), verrai probabilmente richiamato per generare un rapporto rapido per la contabilità / marketing / ecc. con gli ultimi numeri su questo o quello. Oppure, potresti ricevere una VB6 app legacy come tua responsabilità che ha inline SQL. Comprendere l'SQL sarà essenziale per quasi tutti i lavori di programmazione .NET.

LINQ è essenziale per sapere se stai andando a fare qualcosa di diverso dalla legacy (Framework 2.0 o 1.1) della programmazione .NET. Certo, puoi scrivere codice senza usarlo, ma questo non sarà accettabile in organizzazioni che non hanno un enorme investimento in codice "antico".

Entity Framework riunisce SQL e LINQ. Quindi, una volta che hai una comprensione sufficiente di entrambi, puoi andare avanti verso EF piuttosto rapidamente. Ricorda che EF può essere fatto con diagrammi lineari di oggetti DB, creando i tuoi oggetti in codice o tramite un ibrido di queste tecniche tramite classi parziali. C'è un'enorme flessibilità con le versioni EF 4.0 e 5.0.

    
risposta data 29.10.2012 - 16:41
fonte
3

Ho intenzione di andare controcorrente e suggerire LINQ- > EF- > SQL Server. Ecco perché:

  1. LINQ è molto più che scrivere semplicemente query o convertire C # / VB in SQL. È anche una porta per la programmazione funzionale (.Select () = > Map (), .Aggregate () = fold (), .Where () = filter () .SelectMany () = bind ()) e quindi si applica a molti più domini e problemi al di fuori di ottenere solo dati da qualche fonte. SQL stesso è più di un pony one-trick. È un trucco enorme, importante, ma sta ancora recuperando dati da un database. (Non sto dicendo che non puoi scrivere software completo per lo più in SQL, o scrivere query SQL incredibilmente complesse, sto sostenendo che di solito è stupido e ti conviene imparare scrivi meglio le query LINQ).
  2. Otterrai più risultati più velocemente. Imparare SQL in primo luogo è più un approccio di "iniziare dalle fondamenta e lavorare su", che è una buona idea se sei a scuola, o altrimenti hai un sacco di tempo a disposizione, ma non capisco impressione. Otterrai di meno da questo approccio se ti dimentichi presto e perdi l'apprendimento di SQL / SQL Server. Non farlo.
  3. Se, e quando , SQL Server batte il letto perché hai scritto una query LINQ orribile, puoi ottenere aiuto con quella query e andare avanti. TBH ... anche se succede, secondo la mia esperienza, è molto meno comune di quanto non facciano le persone.
  4. Considerando che non scrivi SQL ora, presumo che tu sia uno studente o un autodidatta. Per ora puoi continuare ad affidarti agli amministratori di database e alle persone che conoscono SQL per affrontare i problemi di prestazioni che richiedono processi memorizzati mentre si migliora in quello che si sta facendo ora: il codice dell'applicazione. Penso che questo migliori immediatamente la tua qualità e utilità per il tuo / un datore di lavoro.
  5. SQL Server è una bestia. Non sospetto che tu stia cercando di imparare tutto, ma è davvero enorme una volta che hai capito tutto quello che può fare. Posso facilmente vedere qualcuno che si perde in SQL abbastanza facilmente se non ha esperienza con i linguaggi dichiarativi (cioè, potresti non sapere dove finisce SQL e SQL Server inizia).
  6. Nemmeno LINQ o SQL sono un sottoinsieme dell'altro, ma c'è un'intersezione, quindi l'aver conosciuto è un buon aiuto quando si impara l'altro. Quindi, non penso che imparare prima ti aiuti ad imparare l'altro.

Alcuni non saranno d'accordo, e accolgo con favore i loro argomenti, ma questo è quello che penso.

    
risposta data 29.10.2012 - 16:09
fonte
1

L'apprendimento di SQL Server (T-SQL) ti fornirà una comprensione più approfondita di tutti i database e ti consentirà di raccogliere facilmente concetti da altri database relazionali (Oracle, MySql, Postgres, ecc.). A lungo termine sarai una persona più occupabile.

Un approccio più pratico potrebbe essere imparare entrambi. L'output di EF è T-SQL. Utilizzando uno strumento come EF Profiler , il T-SQL grezzo può essere visualizzato e appreso.

Alla fine della giornata, T-SQL è molto più potente con i dati di qualsiasi ORM (EF, nibernato o LLBGen) e alla fine incontrerai un problema che può essere risolto solo nel database.

    
risposta data 29.10.2012 - 16:44
fonte

Leggi altre domande sui tag