Rappresentazione dei dati con C # e WPF

3

Sto sviluppando un'applicazione che gestisce parti di DB. Recupero i dati dal DB con stored procedure e istruzioni preparate. Ora voglio visualizzare i dati nella GUI.

Qual è la tecnologia attuale utilizzata per questo? Si usa ancora DataSet e DataTable per quello?

    
posta juergen d 08.01.2013 - 14:20
fonte

2 risposte

9

Ci sono diversi strumenti e diversi modelli.

Strumenti

ADO.NET

ADO.NET è molto più di DataSet e DataTable . Non userei queste classi in nessun progetto, ma userei invece IDataReader per popolare i pocos come descritto qui: link

Mappatori dei dati

Il prossimo passo è usare un mappatore di dati. Quello che fanno è lasciarti scrivere istruzioni SQL, ma ti restituiranno automaticamente POCO. Sia come rappresentazione dynamic o come classi generate da T4. (Puoi anche mappare le tue classi)

Alcuni esempi sono Massive, PetaPoco e Simple.Data.

O / Ms

I mappatori oggetto / relazione rappresentano l'approccio più complesso (complesso come nella creazione). Si prendono cura di tutto per te. La maggior parte delle OR / Ms ha anche un provider LINQ to SQL. Cioè, puoi scrivere istruzioni LINQ che poi vengono convertite in SQL.

Il framework Entity, ad esempio, ha un visual designer in cui puoi puntare alle tabelle / colonne per le quali vuoi ottenere le classi. Quindi è abbastanza facile iniziare.

Esempi: Lightspeed, Entity Framework e nhibernate.

Modelli

I pattern ti aiutano a strutturare il codice nel livello di accesso ai dati.

Modello di repository

Il pattern del repository è piuttosto vecchio ma è ancora un pattern rilevante. L'idea è di astrarre l'accesso ai dati per ridurre l'accoppiamento e la complessità.

Oggetto query

Il modello dell'oggetto query viene utilizzato per creare una classe per query. Ad esempio, rende più semplice vedere quali parametri sono richiesti (argomenti del costruttore) e quali sono facoltativi.

CQS

La separazione Comando / Domanda è un modo per separare le informazioni di interrogazione (recupero) e comandi (memorizzazione). Non è solo un pattern di accesso ai dati, ma un modo per strutturare la tua applicazione.

CQRS

CQRS è simile a CQS ma fa un ulteriore passo avanti. Usa modelli separati (database) per letture e scritture. Il modello di lettura viene generalmente generato con l'aiuto di eventi delle scritture.

WPF

In WPF hai i modelli di vista che usi per mappare la GUI al tuo accesso ai dati. Usa ObservableCollection per ottenere una GUI che risponda alle modifiche.

Nel modello di vista utilizzerai uno degli strumenti che ho descritto sopra (direttamente o attraverso uno dei pattern descritti).

Informazioni aggiuntive

Ho scritto un post sul blog sul livello dati qui: link dove discuto l'accesso ai dati.

le stored procedure imho sono obsolete. Le query parametrizzate sono in molti database veloci quanto quelle memorizzate.

    
risposta data 08.01.2013 - 14:36
fonte
1

What is the current technology used for displaying Data? Does one still use DataSet and DataTable for that?

Bene, tenendo conto delle esigenze del progetto, può davvero essere cauto su cosa usare e su quale modello di progettazione client scegliere.

Tuttavia, il punto principale non è quello di complicare eccessivamente le cose (progettazione del progetto) che si prevede di raggiungere. Perché, ogni schema di progettazione ha lo scopo di risolvere alcuni problemi aziendali comuni e implementarli per il gusto di affermare che il progetto usa il modello blah .. non ha alcun valore.

This is not to say that you should shun virtual functions, inheritance, or other features of modern programming languages. Far from it, often they not only add clarity and maintainability they also improve performance. But, as often, I find that people have written their code in some elaborate way when a much simpler model would have been equally servicable and more performant.

Quindi, il mio consiglio sarebbe di praticare KISS e YAGNI principi.

Riguardo a pattern MVVM: è un pattern progettato per risolvere problemi aziendali specifici che sono combinati sotto il termine separation of concerns. Quindi, puoi considerarlo se è adatto al tuo progetto. Per ulteriori letture sulle descrizioni tecniche MVVM è possibile guardare qui.

Una buona lettura che può aiutarti a chiarire la tua decisione riguardo a questo modello è: App WPF con Modello modello View-View-ViewModel .

    
risposta data 08.01.2013 - 17:01
fonte

Leggi altre domande sui tag