2010-07-15 10 views
10

Ok, sto facendo questa domanda perché sono totalmente confuso. Ho usato il normale approccio per accedere ai database da C# (voglio dire usando SQLConnection, OracleConnection, SQLCommand, executequery, ecc.). Poi ho sentito parlare di ADO.NET, ORM e ho imparato NHibernate (non un professionista, ma posso gestirlo).Qual è il metodo più utilizzato per accedere al database da C# al giorno d'oggi

Recentemente non vedo molte attività particolari riguardanti NHibernate. Le persone intorno a me che usavano usare NHibernate (ed era un fan) si stanno ora spostando verso altri metodi.

Quindi qual è il metodo di accesso ai database più utilizzato al giorno d'oggi? Come posso tenere traccia di questa tendenza mutevole?

+8

Cosa hanno detto che si stavano trasferendo le persone intorno a te? –

+0

E non dimenticare SqlDataSource, ObjectDataSource, LinqDataSource, LINQ to SQL, Entity Framework, ADO.Net Data Services ... – DOK

+0

Un sacco di cose ... approccio normale (dicono che facilita il TDD), Linq, Entity framework ecc. ecc ecc. ecc. –

risposta

19

I metodi più comuni sono probabilmente questi:

  • LINQ to SQL
  • Entity Framework
  • ADO.NET direttamente
  • NHibernate
  • Altri O/RMS.

Tutti sono ancora in uso e presentano diversi vantaggi e svantaggi. Penso che Microsoft stia attualmente cercando di incoraggiare le persone a utilizzare lo Entity Framework.

4

A mio parere, per lo sviluppo rapido di applicazioni, l'utilizzo di uno strumento ORM come LLBLGEN è la soluzione migliore. Puoi accelerare notevolmente i progressi di sviluppo.

10

C'è solo un modo: ADO.NET per SQL Server. Più particolare, gli oggetti Connection e Reader li dentro. Ora, si può dire che ci sono cose come Entity Framework - ma abbastanza interessanti sono sopra il livello di accesso reale, usando entrambi gli elementi di accesso nominati prima. Anche i DataSet sono uno strato superiore (i dati vengono letti attraverso un DataReader).

Allora, qual è il metodo di accesso al database più utilizzati al giorno d'oggi?

Scommetto che ANCORA sono dataset. La quantità di istruzione non istruita che segue il principio del trascinamento della selezione è ancora la maggioranza, e questo approccio nello studio visivo porta a Dataset.

I professionisti utilizzano un ORM di sorta. Entity Framework è ora spinto da persone che per lo più non sanno cosa un ORM può programmare correttamente. In questo momento la mia migliore scommessa è ancora NHibernate per un livello di alta qualità.

+4

Non una cattiva risposta, salvo per l'ultimo paragrafo. Entity Framework viene utilizzato da quelli di noi che si rendono conto che esistono diversi tipi di ORM, ciascuno con punti di forza e punti deboli unici ... quindi abbiamo scelto Entity Framework per la nostra applicazione. –

+3

Non solo l'uso "trascurato" del trascinamento della selezione, ma esiste un sacco di sistemi esistenti scritti usando ADO.NET e set di dati digitati e questi sono ancora in fase di sviluppo - nessuno sta per refactoring un intero sistema solo per utilizzare più recenti Tecnologia ORM. –

+0

@Herbie: il codice legacy è una difesa chiara, giusto. @Justin - EF non è mai stato un ORM decente finora. Non c'è quasi nessuna forza in confronto alle offerte più mature. – TomTom

1

Quindi, ci sono poche tecnologie per accedere al database in. NET. Inizialmente, questo è ADO.NET. È una tecnologia di accesso "vera", perché altri (come NHibernate, LINQ2SQL, Entity Framework (sono tutti ORM)) utilizzano ADO.NET per connettersi effettivamente al database ed eseguire comandi su di esso. Ovviamente, .NET offre altri modi per interagire con il database, ad esempio, importando alcune delle interfacce COM, ma non sono naturali.

Inoltre, esistono strumenti che consentono di comunicare con il database. Sono estensioni ADO.NET (come l'accesso ai dati della libreria aziendale) e gli strumenti consentono di lavorare con oggetti (entità denominate) che sono naturali per il runtime orientato agli oggetti come .NET, ma caricano e salvano le entità dal database. Questi strumenti denominati ORM (object-relational mapper) e gli strumenti moderni sono facili da usare e belli.

1

Personalmente amo Linq To Sql utilizzando CodeSmith per generare le entità, più specificamente penso che Plinqo abbia la più semplice estensibilità. Ti consente di separare tutti gli oggetti Entity in file separati con una versione modificabile e una generata. Ciò consente di estendere il DAL con tutte le funzioni di supporto necessarie. ha un add-in di Visual Studio che ti consente di rigenerare tutte le tue entità con un semplice clic.

Normalmente eseguo il database prima del progetto, quindi apporto le modifiche nel database, vado a rigenerare le entità VS e quindi posso continuare a codificare.

Indipendentemente da ciò che si sceglie, penso che un fattore importante per un ORM sia la possibilità di configurarlo per soddisfare le proprie esigenze, non esiste una taglia adatta a tutti.

BTW, io non lavoro per CodeSmith, ho solo usarlo :)

1

Beh, se devo sceglierne uno, direi Entity Framework che è il modo più generico, LINQ to SLQ è deprecato in futuro, NHibernate sarà sempre più in futuro.

Ma il miglior consiglio è probabilmente provare a sceglierne uno per tutta la squadra! anche se ha un rovescio della medaglia, tutti hanno a un certo punto o un altro.

+0

@ Benjamin Non farlo. – Rawling

1

NHibernate e Entity Framework sono ottimi strumenti per l'astrazione del database (EF Code First è sorprendente), ma in alcuni casi, ciò è negativo.

Ho visto molte applicazioni che le prestazioni scadenti sono sulla connessione al database e NH o EF non consentono di controllare le query o l'uso delle funzionalità più potenti del database, a meno che non si sia esperti in ORM (sfortunatamente, sono rari).

Personalmente, preferisco mantenere il controllo nelle mie mani.

Ho creato uno strumento, Thunderstruck, che utilizzo nei miei progetti e di recente ho inserito il codice sorgente su Github.

Problemi correlati