Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Creare le entity

Gestire le tabella SQL come oggetti del nostro model
Gestire le tabella SQL come oggetti del nostro model
Link copiato negli appunti

Come abbiamo visto nelle lezioni precedenti, ASP.Net MVC utilizza per convenzione una particolare struttura delle cartelle dei progetti. Pertanto i file relativi al Model (come le classi LINQ To SQL) trovano posto nella cartella Models.

Per le sue funzionalità automatiche legate a LINQ To SQL, Visual Studio fa uso di particolari file di mappatura con estensione .dbml. In questi file vengono descritte le tabelle e le classi C# che vengono loro associate. Selezioniamo la cartella Model e creiamo al suo interno un nuovo file LINQ To SQL chiamatoGallery.dbml:

Figura 12. Creazione di un nuovo file LINQ To SQL
Creazione di una nuova entity LINQ To SQL

A questo punto, con il file appena creato aperto, è sufficiente trascinare la tabella del database nello spazio di lavoro per creare una nuova classe LINQ To SQL:

Figura 13. Creazione della classe LINQ To SQL
Creazione della classe LINQ To SQL

Nello spazio di lavoro appare una rappresentazione grafica della classe che contiene al suo interno i campi della tabella GalleryImages:

Figura 14. Risulato della creazione della classe LINQ To SQL
Risulato della creazione della classe LINQ To SQL

Questa classe, chiamata GalleryImage, è stata creata automaticamente da Visual Studio e rappresenta ogni immagine. Ogni volta che interrogheremo il database tramite LINQ To SQL non avremo a che fare con le righe della tabella GalleryImages ma con una collezione fortemente tipizzata di oggetti GalleryImage.

Visual Studio crea in automatico anche un'altra classe, nel nostro caso chiamata GalleryDataContext, di tipo System.Data.Linq.DataContext. Questa classe è il punto di accesso che LINQ To SQL ci fornisce per selezionare e modificare i record contenuti nel database o per crearne di nuovi.

All'interno delle classi di tipo DataContext, Visual Studio genera una particolare proprietà per ogni tabella trascinata all'interno del file LINQ To SQL, che prende il nome dalla tabella a cui si riferisce. Ad esempio, nel nostro caso abbiamo trascinato nel file una sola tabella, GalleryImages, per cui avremo accesso soltanto ai record di quest'ultima attraverso una proprietà chiamata appunto GalleryImages. L'accesso ai dati è fortemente tipizzato in quanto i record sono memorizzati in oggetti di tipo GalleryImage come detto poco fa.

Possiamo accedere ai dati utilizzando una sintassi simile a questa:

// Creo una nuova istanza di GalleryDataContext
GalleryDataContext context = new GalleryDataContext();
// Seleziono la prima immagine presente nel database
GalleryImage image = context.GalleryImages.First();
// Accedo all'id dell'immagine
int id = image.ImageId;
// Accedo alla descrizione dell'immagine
string desc = image.Description;

Una delle caratteristche più interessanti della classe GalleryDataContext consiste nel fatto di essere dichiarata come partial. Possiamo quindi aggiungere alla classe generata da Visual Studio alcuni metodi di supporto:

public partial class GalleryDataContext
{
  // Restituisce tutte le immagini
  public List<GalleryImage> GetImages()
  {
    return this.GalleryImages.ToList();
  }
  // Restituisce un'immagine in base all'id
  public GalleryImage GetImageById(int id)
  {
    return this.GalleryImages.FirstOrDefault(img => img.Id == id);
  }
}

Questi metodi ci aiutano nella gestione della galleria di immagini, definiti in un file esterno chiamato GalleryDataContext.cs. A questo punto la cartella Models del progetto contiene quindi due file distinti:

Figura 15. File contenuti in Models
File contenuti in Models

Vedremo come utilizzare la classe LINQ To SQL e le funzioni appena definite parlando dei Controller e delle Viste.


Ti consigliamo anche