Associazione di dati a un Entity Framework in WPF

4

È utile utilizzare l'associazione dati all'entità Entity Framework in WPF?

Ho creato un contesto framework per entità singola:

  1. Per avere una sola connessione e non si aprirà e si chiuderà sempre.
  2. Quindi posso passare l'entità a qualsiasi classe, e posso modificare l'entità e apportare modifiche al database.

Tutti i ViewModels che rimuovono l'entità dallo stesso contesto e assegnamento di dati alla vista mi fanno risparmiare tempo dalla mappatura di nuovo oggetto, ma ora immagino che ci sia un problema nel non utilizzare il nuovo contesto:

Un ViewModel che associa i dati a un'entità, quindi qualcun altro ha aggiornato i dati. ViewModel continua a visualizzare i vecchi dati, poiché il contesto non viene mai eliminato per l'aggiornamento.

Creo sempre un nuovo contesto e poi lo elimina. Se voglio passare l'Entità in giro, allora ci saranno conflitti tra Contesto ed Entità.

Qual è il modo suggerito per farlo?

    
posta King Chan 17.02.2012 - 21:34
fonte

2 risposte

2

Il modo suggerito è di non farlo: i risultati sono imprevedibili fino al punto di essere pericolosi per i tuoi dati. Non si dovrebbe dare alla vista l'accesso diretto al database. I risultati sono imprevedibili.

In primo luogo, la natura sia dell'elaborazione dei dati che degli ORM moderni è una riflessione piuttosto pesante e altre acrobazie simili. Spesso le cose semplicemente non funzionano o semplicemente non si aggiornano nel modo in cui l'ORM si aspetta quindi ci sono bug molto strani da rintracciare. In secondo luogo, quei DbContexts sono piuttosto statici e ci possono essere molte complicazioni durante la loro nuova creazione e il passaggio di oggetti. Il terzo problema è il potenziale per il tipo di problemi di prestazioni SELECT N + 1: se si interrompe l'accesso al database, la vista non può tornare al database per eseguire una selezione secondaria per ogni singolo cliente inserito nell'elenco, per esempio. Infine, per applicazioni non banali, raramente si intravedono scenari in cui le viste front-end vogliono parlare con un oggetto a forma di entità back-end.

    
risposta data 17.02.2012 - 22:16
fonte
1

.net in realtà fa un buon lavoro di gestione delle connessioni dietro le quinte per voi mettendo in comune le connessioni.

Questo è un caso classico di optomising troppo presto. In effetti, stai molto meglio scrivendo un'applicazione che funziona e prova da banco per trovare i colli di bottiglia piuttosto che fare supposizioni e sovrastimare il tuo progetto troppo presto. Potresti scoprire che è necessario utilizzare il pattern Singleton ma ne dubito.

    
risposta data 17.02.2012 - 22:12
fonte

Leggi altre domande sui tag