tecnica di comunicazione del database C #

7

Alcuni giorni fa, ho letto una risposta in cui si affermava che le query di scrittura all'interno del codice c # sono finite da tempo.

Non sono sicuro di cosa intendesse la persona specifica con il commento, ma mi ha fatto riflettere. Nell'azienda in cui lavoro, gestiamo un assembly contenente tutte le query sul database (chiamiamolo Query). Questo assembly fa riferimento a un assembly QueryService (Recupera le query corrette) a cui fa riferimento un assembly UnitOfWork (le classi di connettori del database, abbiamo diverse classi di connettori per SQL, MySQL ecc.). Utilizziamo questi tre assembly per eseguire operazioni sul nostro database e tutte le query / comandi sono scritti dal codice C #.

C'è un modo migliore per comunicare con il database e c'è un modo migliore per comunicare con diversi tipi di database?

    
posta user65439 28.09.2012 - 14:50
fonte

4 risposte

4

Gli ORM funzionano solo con strutture di database semplici. Per la maggior parte credo che questo sia OK. Se come me hai bisogno di ottenere di più dal tuo database che selezionare / aggiornare ecc. Allora ho trovato che gli ORM non sono una buona misura e renderanno il tuo codice più lungo, meno chiaro, più difficile da gestire ...

Anche gli script e gli sprocs SQL sono essenzialmente un linguaggio di database e non dovremmo avere paura di mescolare le lingue quando sono più adatte per il lavoro a portata di mano

    
risposta data 28.09.2012 - 16:27
fonte
10

Potrei azzardare un'ipotesi che la citazione stia parlando dell'aumento di ORM s per l'accesso al database.

Un ORM farà tutte le comunicazioni al database e tradurrà tra il database e i tuoi oggetti.

La maggior parte degli ORM elabora anche le differenze tra diversi database, quindi dovresti essere in grado di utilizzare lo stesso codice.

Esempi di ORM per .NET sono nHibernate e Entity Framework (anche se ce ne sono molti).

    
risposta data 28.09.2012 - 15:05
fonte
4

La cosa importante in .NET è menzionare LinQ - una funzionalità nel linguaggio di programmazione C # . È uno strumento di query molto potente su raccolte che supportano l'interfaccia generica IEnumerable<T> .

Ad esempio, LINQ to SQL (chiamato anche Linq2Sql ) e LINQ alle entità sono entrambi molto potenti e hanno familiarità con risparmia un sacco di tempo.

Questo è uno strumento davvero utile da utilizzare, in momenti in cui costruisci un'applicazione rapida basata sui dati .

Modifica: per supportare diversi database potrebbe essere necessario cercare soluzioni ORM con tale capacità. Per quanto ne so, ibernazione e ultimamente Entity Framework hanno questa capacità.

    
risposta data 28.09.2012 - 15:21
fonte
1

Is there a better way to communicate with the database and is there a better way to communicate with different database types?

A questa particolare domanda, direi: no. I database relazionali tipicamente "parlano" SQL come lingua principale. Come si costruiscono queste query SQL, tuttavia, sembra essere obsoleto.

Per offrire un'alternativa alle risposte ORM (che sono corrette - gli ORM sono molto popolari e spesso ottimi per questo), prendi in considerazione SQL Builders . In sostanza, si tratta di classi che consentono di costruire query SQL in un modo che è meno aperto agli errori e che sono più naturali. La concatenazione manuale delle stringhe è difficile da leggere, soggetta a errori e spesso fonte di falle nella sicurezza.

Modifica: poiché hai citato in particolare C #, prova Massive o (il più limitato) CommandBuilder .

    
risposta data 28.09.2012 - 15:39
fonte

Leggi altre domande sui tag