Condividi tramite


Oggetti di tipo complesso (Entity Framework)

I tipi complessi sono proprietà non scalari di tipi di entità che consentono l'organizzazione delle proprietà scalari nelle entità. Analogamente alle entità, i tipi complessi sono costituiti da proprietà scalari o da altre proprietà dei tipi complessi. Un tipo complesso non può esistere senza un'entità padre o un tipo complesso. Poiché i tipi complessi non dispongono di chiavi, gli oggetti di tipo complesso non possono essere gestiti da Object Services separatamente dall'oggetto padre. Per ulteriori informazioni, vedere Tipo complesso (EDM).

Quando tramite gli strumenti di Entity Framework vengono generati oggetti che rappresentano tipi di entità, questi oggetti ereditano da EntityObject. Analogamente, gli oggetti generati per i tipi complessi ereditano da ComplexObject. Entrambe queste classi ereditano dalla classe di base StructuralObject. È possibile accedere alle proprietà scalari degli oggetti di tipo complesso nello stesso modo utilizzato per tutte le altre proprietà scalari. Per ulteriori informazioni, vedere Procedura: creare ed eseguire query di oggetto con tipi complessi (Entity Framework).

Quando si utilizzano oggetti che rappresentano tipi complessi, prestare attenzione ai punti seguenti:

  • Le proprietà dei tipi complessi non possono essere null. Se viene chiamato il metodo SaveChanges e viene rilevato un oggetto complesso null, si verifica un'eccezione InvalidOperationException. Analogamente alle proprietà scalari delle entità, anche le proprietà scalari degli oggetti complessi possono essere null.

  • I tipi complessi non possono ereditare da altri tipi complessi.

  • Quando qualsiasi proprietà viene modificata in un punto qualsiasi dell'oggetto grafico di un tipo complesso, la proprietà del tipo padre viene contrassegnata come modificata e tutte le proprietà dell'oggetto grafico del tipo complesso vengono aggiornate quando viene chiamato SaveChanges.

  • Viene creata un'istanza degli oggetti complessi che ereditano da ComplexObject quando si accede alla proprietà del tipo complesso e non quando viene creata un'istanza dell'oggetto padre.

  • Quando una classe di dati personalizzata eredita da EntityObject, le classi del tipo complesso devono ereditare da ComplexObject.

  • È possibile utilizzare i tipi complessi quando si implementano interfacce delle classi di dati personalizzate, ad esempio IEntityWithKey. Per l'utilizzo di tipi complessi con le classi di dati personalizzate è tuttavia consigliabile ereditare sia da EntityObject che da ComplexObject. Per ulteriori informazioni, vedere Personalizzazione di oggetti (Entity Framework).

Vedere anche

Altre risorse

Utilizzo di oggetti (Entity Framework)