Posts
256
Comments
330
Trackbacks
7
Entity Framework 4: POCO e Complex Type

 

Proviamo a modificare il Data Model precedente , per testare il supporto di  Visual Studio 2010 ai Complex Type. Eliminiamo dall’entità Persona la proprietà Indirizzo, sostituendola con le proprietà Via, NumeroCivico, Comune e Provincia di tipo stringa:

image

Le proprietà elencate sono le candidate per il tipo complesso Indirizzo. A differenza della versione precedente di Entity Framework, in cui bisogna modificare a mano il codice del file .edmx, Visual Studio 2010 ci viene incontro: selezioniamo con il mouse le proprietà precedentemente citate tenendo premuto il tasto CTRL, premiamo il tasto destro del mouse e scegliamo “Refactor into New Complex Type”, come in figura:

image

Nel Model Browser rinominiamo il Complex Type “ComplexType1” appena creato in “Indirizzo” :

image

A questo punto, l’EDM Designer, dovrebbe assomigliare a qualcosa di questo tipo:

image

Visualizzando il Mapping Details, possiamo osservare come Visual Studio mappa le nostre entità alle tabelle del database:

image 

Per avere un’applicazione completa, non ci resta che modificare le classi POCO: selezioniamo il progetto “EF4FeaturesPOCO” ed aggiungiamo una nuova classe Indirizzo:


public class Indirizzo
{
    public string Via { get; set; }
    public string Comune { get; set; }
    public string NumeroCivico {get;set;}
    public string Provincia { get; set; }
}

e modifichiamo il codice della classe Persona:


public class Persona 
{ 
    public int Id { get; set; } 
    public string Nome { get; set; } 
    public string Cognome { get; set; } 
    public Indirizzo Indirizzo { get; set; } 
    public List<Ente> Enti { get; set; } 
}

Non ci resta che modificare il codice per l’inserimento di una nuova persona:


EF4FeaturesData.PersonaManager manager = new EF4FeaturesData.PersonaManager(); 
Persona p = new Persona(); 
p.Enti = new List<Ente>(); 
p.Cognome = "PIETRO"; 
p.Nome = "LIBRO"; 
 
p.Indirizzo = new Indirizzo() 
{ 
    Comune = "ROMA", 
    NumeroCivico = "s.n.c.", 
    Provincia = "RM", 
    Via = "Via Una Via Di Roma" 
}; 
 
Ente e = new Ente(); 
e.Persone = new List<Persona>(); 
e.Denominazione = "NUOVA SOCIETA' s.r.l."; 
e.Sigla = "NS"; 
 
manager.Aggiungi(p, e);           
 
Console.WriteLine("Nel DB sono presenti le seguenti persone:"); 
 
foreach (Persona per in manager.OttieniElencoPersone()) 
{                
    Console.WriteLine("{0} {1} ID={2}", per.Nome, per.Cognome, per.Id); 
    Console.WriteLine("Via: {0}", per.Indirizzo.Via); 
    Console.WriteLine("Comune: {0}", per.Indirizzo.Comune); 
    Console.WriteLine("Provincia: {0}", per.Indirizzo.Provincia); 
    Console.WriteLine("Appartiene ai seguenti enti:"); 
    foreach (Ente ent in per.Enti) 
    { 
        Console.WriteLine("===>{0}", ent.Denominazione); 
    } 
}

Eseguendo l’applicazione, otteniamo:

image

Piccola osservazione: un secondo modo possibile (oltre al codice a manina) per aggiungere un Complex Type al nostro modello, è quello di selezionare “Add\Complex Type” dal menu contestuale visualizzabile tramite click del testo destro del mouse dell’EDM designer:

image

posted on domenica 10 gennaio 2010 18.57 Print
Comments
Gravatar
# re: Entity Framework 4: POCO e Complex Type
Nicolò Carandini
12/01/2010 7.03
  
Mi sa che giunta l'ora di lasciare LinqToSQL e iniziare ad usare EF ... :-D
Gravatar
# re: Entity Framework 4: POCO e Complex Type
Pietro Libro
12/01/2010 9.40
  
Devo essere sincero, non ho mai utilizzato Linq To SQL. Mi è sempre sembrato troppo limitativo.
Gravatar
# re: Entity Framework 4: POCO e Complex Type
Marco I.
14/01/2010 23.30
  
Grazie per l'articolo. Mi pare che finalmente con questa versione di EF si possa cominciare a lavorare in modo egregio.
Comments have been closed on this topic.
News

View Pietro Libro's profile on LinkedIn

DomusDotNet
   DomusDotNet

Pietro Libro