Antonio "tdj"

(C'è sempre un modo migliore)
posts - 312, comments - 268, trackbacks - 17

My Links

News





Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

Articoli

Blogs

Controlli WinForm free

Guide

Siti vari

Sviluppo

[EF 4.1] Gestione del database

Disponibile da alcuni giorni la RC, Entity Framework 4.1 introduce un approccio di sviluppo chiamato Code First che, detto in maniera spicciola, permette il mapping delle entità con il database senza l’uso del file EDMX. Per avere un’idea di che cos’è Code First e come funziona potete leggere l’articolo “Introduzione ad Entity Framework 4.1” che ho pubblicato recentemente.

Una caratteristica interessante di questa versione è la possibilità di creare il database basandosi sulle informazioni di mapping definite via codice. Per far questo occorre configurare l’engine prima di utilizzare la classe di Context attraverso il metodo SetInitializer() della classe statica Database, che accetta un oggetto che implementi l’interfaccia IDatabaseInitializer. Di serie, EF 4.1 prevede tre strategie diverse rappresentate da tre classi:

1) CreateDatabaseIfNotExists: crea il database se non esiste;

2) DropCreateDatabaseAlways: cancella e ricrea il database la prima volta che viene istanziato il Context nell’AppDomain;

3) DropCreateDatabaseIfModelChanges: ricrea il database solo se cambia la struttura.

Ad esempio, la prima strategia può tornare utile quando si esegue il deploy dell’applicazione in produzione senza distribuire il database che verrebbe creato automaticamente allo startup dell’applicazione in inizializzando EF in questo modo:

 

Database.SetInitializer(Of NorthwindContext)(New CreateDatabaseIfNotExists(Of NorthwindContext))

 

Perchè tutto questo funzioni è necessario che l’utente che accede al database abbia i permessi per crearlo (e, se necessario, cancellarlo).

Print | posted on venerdì 25 marzo 2011 00:54 | Filed Under [ Entity Framework ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET