Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }

  Home :: Contact :: Syndication  :: Login
  1125 Posts :: 64 Stories :: 1443 Comments :: 236 Trackbacks

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Microsoft MVP

My MVP Profile

My MVP Corner Page

Il mio libro su LINQ!

Il mio nuovo libro su Microsoft LINQ E' uscito il mio libro "Microsoft LINQ in Visual Basic 2008". Clicca sulla copertina per informazioni!

Visual Basic Tips & Tricks Team Member

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Windows Live Alerts

Vsi Builder 2008

Il mio tool per VS 2005/2008 Scarica Vsi Builder, il mio tool per Visual Studio 2005/2008!

Aggiungimi al Social MSDN!

Dove vivo

Contattami su Messenger


Grab this badge here!

OmniaDoc by AB Sistemi

CyberInstaller Beta Tester

Scarica il nuovo CIS 2009!!

Altri spazi

CodePlex download Scarica i miei progetti open-source su CodePlex!

Cerca nel blog



Article Categories

Archives

Post Categories

Image Galleries

.NET Framework

Back to basics

Blogroll

Help 1.x e 2.0

Microsoft & MSDN

Setup & Deployment

Visual Basic .NET e 2005

Una delle nuove caratteristiche di ADO.NET Entity Framework 2.0, che possiamo già saggiare nella Beta 1 di Visual Studio 2010, si chiama Model First e consente di generare un vero e proprio database di SQL Server a partire dal modello a oggetti. In questo modo è possibile partire dal modello tipizzato arrivando a uno script SQL. In primo luogo si aggiunge al progetto un Entity Data Model:

Ci verrà poi chiesto di specificare l'origine per l'EDM. In questo caso dobbiamo selezionare un modello vuoto:

 

Dopo qualche secondo, il designer di EF si presenta in modo simile alla figura seguente, da cui si evince che possiamo iniziare a modellare l'EDM sfruttando alcuni speciali elementi nella toolbox, che ci permettono di definire le entità, le associazioni e i livelli di ereditarietà:

Supponiamo di voler creare una banale relazione one-to-many tra un impiegato e gli ordini di cui lo stesso si è occupato. Trasciniamo l'oggetto Entity dalla toolbox sul designer. Possiamo rinominare il titolo di default con l'identificatore di nostro interesse, come Employee, facendo clic sull'identificatore di default. Visual Studio ha altresì aggiunto una scalar property di partenza, che rappresenta la chiave primaria (Id, in questo caso) e che possiamo lasciare invariata. Dopodichè, possiamo fare clic destro sulla parte superiore dell'entity per aggiungere ulteriori scalar properties (che, ricordiamo, rappresentano in forma .NET le colonne del db) e selezionando il comando Add scalar property, come in figura:

Nell'esempio ho aggiunto alcune proprietà banali, come il nome, il cognome, il ruolo e la data di nascita. Per default Visual Studio assegna il tipo String, ma è possibile utilizzare la finestra delle proprietà per cambiare il tipo, come nel caso della scalar property BirthDate che è modificato in DateTime. Inoltre, è anche possibile indicare che il tipo stesso sia Nullable.

Sempre con un clic destro sul designer, è possibile aggiungere un entità (Add entity). Vogliamo aggiungere un oggetto che rappresenti un singolo ordine, quindi chiameremo l'entità Order e l'entityset come Orders (invece che OrderSet proposto di default):

Visual Studio stabilisce anche by default una proprietà Id che rappresenta la chiave primaria. Vogliamo poi aggiungere una relazione tra le due entità. Si fa aggiungendo una Association:

A questo punto comparirà una finestra in cui ci verrà chiesta conferma della relazione uno (employee) a molti (order). Dopo aver accettato quanto proposto di default, il designer si presenta come nella seguente figura, all'interno della quale noterete anche il comando da intraprendere successivamente, ossia quello per la generazione dello script SQL:

Ci verrà poi chiesto di specificare una connessione. In questa fase possiamo specificare un nuovo database, come nel mio esempio in cui viene generato un database chiamato ModelFirstDemo.Mdf:

A questo punto ci verrà mostrata una preview dello script che sta per essere generato e che potete sfogliare:

Dopo alcuni secondi lo script SQL viene reso disponibile nell'editor di Visual Studio e dove è possibile mandarlo in esecuzione:

 

Lo scopo di questo tipo di approccio è quello di favorire la modellazione dei dati secondo un'ottica tipicamente .NET, piuttosto che partire da un'ottica classica di tipo SQL. In questo modo sarà il database ad adattarsi alle funzionalità richieste e progettate in modo del tutto .NET oriented.

E' chiaro che la progettazione di un EDM complesso non è una banalità e richiede sicuramente esperienza nella progettazione dei modelli e che questo post ha prevalentemente lo scopo di farvi conoscere questa nuova funzionalità.

Alessandro

posted on Saturday, August 01, 2009 11:07 PM

Feedback

# Tecnologie per una nuova architettura « Z??????f??b???? 8/10/2009 3:21 PM Pingback/TrackBack
Tecnologie per una nuova architettura « Z??????f??b????

# re: Approccio "Model First" in ADO.NET Entity Framework 2.0 e VS 2010 8/13/2009 7:12 PM Armando
E' possibile utilizzare anche altri database tipo SQLite, Oracle?

# re: Approccio "Model First" in ADO.NET Entity Framework 2.0 e VS 2010 8/13/2009 7:18 PM Alessandro Del Sole
E' possibile ammesso che sia disponibile un provider di terze parti per il DBMS che ti interessa. L'Entity Framework, infatti, è estendibile.

Qui: http://msdn.microsoft.com/en-us/data/dd363565.aspx
trovi una lista di alcuni provider, ma sicuramente è una lista che si evolve di continuo.

Post Feedback

Title:
Name:
Url:
Comments: 
Codice di sicurezza
Protected by FormShield