Domanda

Sono un ex programmatore ASP classico e talvolta programmatore PHP che scrive la mia prima applicazione ASP.NET. Adoro le funzioni ADO.NET molto migliorate, ma sento la necessità di scrivere una classe di database. In parte voglio consolidare il codice che interagisce effettivamente con il database, e in parte voglio ridurre ciò che sembra ripetizione.

Una semplice classe di database non è difficile da fare, ma sto usando query con parametri come una delle mie misure di sicurezza. Sto lottando con come incorporarlo in una classe. Ho scritto una funzione per restituire il tipo di dati di una colonna nel database passando il nome della tabella e della colonna, ma non riesco a pensare a un modo affidabile per ottenere il nome della tabella e della colonna dalla query SQL.

Il mio progetto per la classe era di avere una funzione Query () per la selezione e una funzione Execute () per inserire / aggiornare / cancellare. (Non si oppone ad avere più funzioni pubbliche, ma non voleva andare oltre me stesso.) Entrambe le funzioni accettano una stringa SQL e una SortedList per i parametri. Potrebbe essere possibile ottenere il nome della colonna trovando il nome del parametro nella stringa SQL e guardando davanti al segno di uguale. Allo stesso modo, dovrebbe essere abbastanza semplice ottenere il nome della tabella quando la query viene inserita, aggiornata o eliminata, poiché si lavora solo con una tabella alla volta. La grande preoccupazione è la selezione, perché potrebbero esserci uno o più join, selezioni interne, ecc.

Sto andando nella direzione sbagliata? Qualcosa a cui non sto pensando potrebbe rendere la mia vita più facile o più difficile? Qualcuno ha scritto un corso per questo in qualsiasi lingua che possa offrire qualche consiglio?

È stato utile?

Soluzione

Non reinventare la ruota. Cerca in nHibernate o LINQToSQL (o LINQToEntities ) per le tue esigenze ORM.

Altri suggerimenti

Sarei secondo la chiamata per trovare una ruota collaudata che funzioni per te, specialmente se questa è la tua prima incursione su aspnet ... ci sarà molto altro per tenerti occupato.

Aggiungerebbe un suggerimento per SubSonic , che è forse un po 'più leggero di nHibernate, ma dipende davvero dal natura del tuo progetto, sono entrambi ottimi strumenti ed entrambi mi hanno risparmiato mesi di lavoro negli ultimi anni.

Penso che, poiché questa è la tua prima esperienza in ASP.NET, ti consigliamo di esaminare Linq to SQL. Fai alcuni tutorial in modo da avere un'idea di come funziona prima di provare a codificare qualsiasi query Linq.

Le uniche ragioni a cui posso pensare di NON usare Linq to SQL nel tuo caso sarebbero se non stai usando SQL Server (o se hai bisogno di supportare altri DB né adesso né in futuro), oppure non puoi usare .NET 3.5 runtime per qualche motivo.

Buona fortuna

Mi sembra che la tua "semplice classe di database" nasconde troppi dettagli alle classi che devono usarlo.

Ho scritto classi che contengono un SqlCeEngine ed espongono metodi come " LookupDescription (String Code) " ... Penso che quel tipo di design sia qualcosa che dovresti esaminare. E, considera di esaminare LINQ. Ha molto da offrire.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top