2010-04-19 8 views

risposta

11

Prova DbExtensions, disponibile come NuGet package.

+0

DbExtensions è facile da usare. Tuttavia, ha alcuni problemi di progettazione fondamentali. Innanzitutto, non ha molto desiderio INSERIRE la funzione IGNORE INTO. In secondo luogo, è molto rigido. Quando si esegue INSERT_INTO, non può eseguire INSERT_INTO ({0} ({1}, {2}), tableName, col1, col2) perché ciò aggiungerà virgolette singole attorno ai parametri. Invece devi usare il sovraccarico e fondamentalmente l'hardcode nella stringa di input. Un altro esempio sta facendo i VALORI che devi fare VALUES (some_string) o fare VALUE ({0} = {1}, col1, val1). Detto ciò, non è una cattiva libreria, ma lascia molto a desiderare. –

+0

@SomeNewbie Pubblica i tuoi commenti [qui] (https://github.com/maxtoroq/DbExtensions/issues) e ti aiuterò. –

0

Costruisco sempre il mio ... è semplice e veloce e non è necessario affidarsi a librerie di terze parti. Inoltre ti aiuta a diventare un po 'più intimo con SQL.

+1

Questo è vero se sei un programmatore, ma mi può vedere che libreria viene utilizzato per azionare una GUI che consente ai non programmatori/persone di inserimento dati di costruire query generiche su un database. Non saranno mai in grado di farlo * in modo efficiente * ma a volte è utile. –

+0

Ti dispiace condividerlo? – SuperManSL

+1

È davvero così facile? Come gestisci i sub-select? C'è una forte digitazione? Partecipare? Aliasing? Puoi raggruppare elementi in una clausola where in modo che le istruzioni OR non annullino le istruzioni AND? Potrei andare avanti –

2

Non che io sappia (anche se ciò non significa che non ci sia assolutamente).

Che dire di Entity Framework? Permette la query da costruire e si traduce che per SQL contro entità:

customers.OrderBy(c => c.Name).Skip(10).Take(20) 

Genera:

SELECT value c 
FROM NW.Customers AS c 
ORDER BY c.Name skip 10 limit 20; 
+1

L'applicazione su cui sto lavorando è in .Net 2.0. Quindi EF non è un'opzione per me. – Amitabh

+0

Puoi usare un orm completo come NHibernate? Ti darà la possibilità di compilare le query tramite la sua API Criteria. –

+0

Usiamo nHibernate 1.2 nella nostra applicazione, ma questa particolare funzionalità ha ignorato nibernate per motivi di prestazioni. – Amitabh

2

Qualche cosa male con LINQ to SQL?

var dc = new YourDataContext(); 
var query = dc.TableName.Where(x=>x.MatchesYourPredicate); 
Console.WriteLine(dc.GetCommand(query).CommandText); 
+0

Il progetto di cui avevo bisogno era il progetto .Net 2.0. – Amitabh

+0

Che schifo. Mi dispiace. – smartcaveman

+1

Inoltre, gli elementi di filtro non sono sempre noti – Thea

Problemi correlati