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 Code First: <Key> e <ForeignKey>

Gli attributi <Key> e <ForeignKey> sono utilizzati da Entity Framework Code First per definire rispettivamente la (o le) chiave primaria e la chiave esterna qualora non sia (o non si voglia) seguire la “naming convention”.

L’attributo <Key> è intuitivo, serve per marcare una o più proprietà come chiave primaria nel database. Consideriamo le seguenti entità:

   Public Class Book
<Key()>
Property BookId As Integer
Property Title As String
Property Author As Author  
End Class

   Public Class Author    
       Property AuthorId As Integer
       Property FirstName As String
       Property LastName As String
End Class

 

il risultato nel database è il seguente:

 

image

 

Tutto nella norma per quanto riguarda la chiave BookId mentre la chiave esterna rappresentata dalla proprietà Author è stata tradotta nel database con la coppia PropertyNavigationName_PropertyNameId che nell’esempio è Author_AuthorId. Si tratta di una convenzioni usata da Entity Framework laddove non viene specificato nulla dall’utente.

Ma se volessimo avere anche il valore della chiave esterna oltre all’intero oggetto rappresentato dalla navigation property Author, esattamente come avviene in Entity Framework 4? Usiamo l’attributo <ForeignKey> modificando la classe Book in questo modo:

 

   Public Class Book
     <Key()>
     Property BookId As Integer
     Property Title As String
     <ForeignKey("AuthorId")>
     Property Author As Author        Property AuthorId As Integer
   End 
Class


Semplicemente si aggiunge una nuova proprietà che identifica il valore della chiave esterna (esattamente come lo definiremmo nel database) e decoriamo la navigation property Author con l’attributo <ForeignKey> specificando il nome della properietà/campo chiave di riferimento. Il database risultante sarà il seguente:

 

image

 

In questo modo possiamo sfruttare tutte le facilitazioni che già conosciamo in EF 4 e cioè usare il campo chiave anzichè la navigation property nelle operazioni di Add ed Update:

 

Dim _book As New Book With {
                     .Title = "Visual Basic 2010 Unleashed",
                     .AuthorId = 1                           
}

Print | posted on mercoledì 2 maggio 2012 11:00 | Filed Under [ Entity Framework Entity Framework Code First ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET