Entity Framework come sistema di verifica / verifica del tipo per il codice del database

6

Quando leggo liste pro e contro di utilizzo di Entity Framework (o di qualsiasi moderno ORM), sono sorpreso che il seguente punto non si presenti (auto citazione):

Using strongly-typed domain entities allows for type checking at compile-time which essentially performs a verification of all your database operations. This is something that is not possible with ADO.NET (whether using inline SQL or stored procedures).

Per me, questo è uno dei maggiori vantaggi dell'utilizzo di un ORM. Un problema che trovo regolarmente quando si tratta di applicazioni basate su ADO.NET sono gli errori di run-time di SQL. Il controllo statico lo elimina completamente.

Qualcuno potrebbe spiegare perché questo non è estremamente rilevante per molti sviluppatori? Sembra che alcuni non sono nemmeno d'accordo con la dichiarazione di cui sopra.

Esempio di alcuni pro e amp; con risorse:

posta davenewza 11.02.2013 - 08:08
fonte

1 risposta

3

Ciò che hai menzionato su Entity Framework avviene solo se il tuo modello è aggiornato (in progettazione data-driven). In caso contrario, non si verificherà un errore in fase di compilazione e si rinvierà definitivamente a errori di runtime.

Considera questo scenario. Crei un database, con una tabella chiamata Users che ha 3 colonne: Username , Password , IsActive .

Si crea un progetto e si aggiunge un file Entity Framework .edmx ad esso, aggiornandolo con lo schema del proprio database. Ottimo fino qui.

Ora cosa succede se qualcuno cambia il tipo di dati della colonna IsActive da Boolean a int e non lo sai?

Costruisci semplicemente il tuo progetto (che costruisce con successo) ed eseguilo, e poi ottieni degli errori.

Nei modelli di sviluppo model-first e code-first, lo scenario è anche peggiore, in quanto non esiste una mappatura diretta e auto-generata tra il modello di dominio e lo schema del database.

Quindi, grazie all'esperienza che ho avuto fino ad ora, non posso dire che Entity Framework ti aiuti sicuramente ad ottenere problemi di mappatura in fase di compilazione. L'unico caso che può aiutare è di lasciar generare il modello stesso dal database e aggiornarsi.

    
risposta data 11.02.2013 - 15:43
fonte

Leggi altre domande sui tag