Come si esegue il mapping di SQL Server con una nuova applicazione desktop scritta in C #? [chiuso]

1

Tra 2 settimane avvierò un nuovo lavoro come sviluppatore di software in un'azienda che al momento non impiega programmatori professionisti. Il mio primo compito sarà riscrivere un'applicazione Excel / VBA in C #, con un back-end SQL.

Attualmente sono uno sviluppatore C # ma non utilizziamo un back-end del database; in precedenza ero un amministratore di database ma non ho programmato. Ho poca esperienza nell'unire i due mondi.

Quali sono le opzioni per modellare l'accesso al database in un'applicazione desktop C # con un back-end di SQL Server? Vorrei avere una certa separazione tra i livelli (database, logica, interfaccia utente).

    
posta Paul Richards 15.04.2015 - 09:30
fonte

2 risposte

1

Quello che penso che tu desideri è la progettazione basata sul dominio, in termini semplici la separazione delle preoccupazioni. Leggi su di esso e sei a posto. Per semplificare le cose, dal momento che dici di essere nuovo, basta disporre del livello User Interface nel proprio progetto, un livello di servizio / logica nel proprio progetto. un livello di accesso ai dati nel proprio progetto e altri livelli a seconda del progetto. Per l'accesso ai dati, ti consigliamo di utilizzare Entity Framework per eseguire il bind con il tuo database (opzione preferibile prima del database poiché hai lo sfondo di db admin). Ora leggi e acquisisci familiarità con Linq ed Entity Framework e penso che tu sia a posto.

    
risposta data 15.04.2015 - 15:15
fonte
-1

Dovresti assolutamente progettare la tua applicazione con livelli discreti: accesso ai dati, logica aziendale, interfaccia utente, ecc.

Tuttavia, andrò contro la tendenza e ti suggerisco di non usare Entity Framework per il tuo livello di accesso ai dati.

Un ORM dovrebbe essere puramente un mappatore tra le classi di database e POCO. Ai miei occhi, EF rompe il principio di responsabilità singola cercando di fare troppo: memorizzazione nella cache, cambio di tracciamento, caricamento pigro ecc. Tutte queste funzionalità extra impongono un carico eccessivo sulle prestazioni.

Invece, ti suggerisco di utilizzare un semplice micro-ORM come Dapper , Peta Poco o OrmLite . La tua scelta dipenderà dalle esatte funzionalità richieste e dal fatto che tu disponga di un database esistente. Il mio voto sarebbe andato a OrmLite, poiché supporta la progettazione in codice (generando elementi di database dalle definizioni di classe C #) e funzionalità asincrone / attese.

    
risposta data 15.04.2015 - 15:59
fonte

Leggi altre domande sui tag