2014-12-09 13 views
5

In questo momento sto imparando molto su Entity Framework da Videos on Pluralsight, quindi scusa la mia domanda che potrebbe sembrare nuova ma non riesco a capire quali sono i tipi complessi o perché avrei bisogno loro.Cosa sono i tipi complessi nel contesto con Entity Framework

so che devo mappare loro tramite annotazioni o perfetto Api qualcosa di simile:

modelBuilder.ComplexType<blubb>(); 

Forse qualcuno potrebbe elaborare la necessità di tipi complessi per me?

risposta

4

Supponiamo di avere un'entità per Corsi in una classe, quell'entità ha proprietà scalari di Posizione, Giorni e Tempo, ma si trova che si desidera astrarre tale in modo che altre entità possano utilizzare lo stesso modello. In questo modo è possibile creare un tipo complesso che contiene Giorni, Posizione e Ora assegnargli un nome: ComplexType1. Ora altre entità possono utilizzare questo tipo piuttosto che singole proprietà scalari semplicemente dichiarando ComplexType1 nella definizione del modello.

+1

Grazie per la buona risposta. Nel tutorial non è stato detto che posso usare questo tipo complesso per più di un'entità, ecco perché non sapevo come dovrebbe essere utile :) – CodeFanatic

+1

Voto in eccesso per indicare che anche altre entità possono usare il modello . – Hans

5

I tipi complessi ripetono i modelli strutturali nel database. Devi personalizzarli per mapparli perché non c'è modo di essere dedotti.

Un esempio potrebbe essere due tabelle che entrambi hanno relativo indirizzo colonne:

impresa

CompanyName 
AddressLine1 
AddressLine2 
Postcode 

Account Manager

Name 
TelephoneNumber 
SuperiorName 
AddressLine1 
AddressLine2 
Postcode 

Questo non è ovviamente di database ben normalizzata design ma tali situazioni si verificano. È possibile astrarre il modello per l'indirizzo in un tipo complesso, quindi specificare che Company e AccountManager hanno quel tipo complesso anziché continuare a mappare le colonne di corrispondenza (sebbene separate nel database) per ogni tabella che contiene colonne di indirizzi.

Ecco un approfondito articolo su tipi complessi: http://msdn.microsoft.com/en-gb/data/jj680147.aspx

E qui è uno che non è così pesante, e mostra il beneficio di mappatura due indirizzi su un modello, cose del genere: http://visualstudiomagazine.com/articles/2014/04/01/making-complex-types-useful.aspx

1

I tipi complessi non sono associati ad una tabella come entità, ma vengono mappati su uno o più campi.

Il seguente complesso tipo

public class Descriptor 
{ 
    public string Name {get;set;} 
    public string Description {get;set;} 
} 

E entità

public class MyEntity 
{ 
    public Descriptor { get;set;} 
} 

Ciò mappare una tabella con Name e Description campi. È un modo utile per fare in modo che un tipo incapsuli un insieme comune di campi/proprietà che potresti desiderare su più entità.

+0

L'esempio di classe MYEntity è errato in quanto non si riferisce a nessun tipo di Complesso noto. –

+0

Spiacente, devo aver salvato una risposta metà modificata. –

Problemi correlati