posts - 315, comments - 268, trackbacks - 15

My Links

News

View Pietro Libro's profile on LinkedIn

DomusDotNet
   DomusDotNet

Pietro Libro

Tag Cloud

Article Categories

Archives

Post Categories

Blogs amici

Links

ASP.NET 5 e Entity Framework 7 (beta)

Vediamo in questo post come iniziare a giocare con Entity Framework 7 “beta” (in “beta” solo per uniformità con in rilascio della preview di VS 2015, cosi come descritto in questo post). Partiamo con aprire VS 2015 e creare un progetto di tipo “ASP.NET 5 Console Application”:

image

Per utilizzare Entity Framework 7, apriamo il file Project.json e aggiungiamo nella sezione dependencies le tre dipendenze seguenti:

  1. "EntityFramework": "7.0.0-beta1"
  2. "EntityFramework.Commands" : "7.0.0-beta1"
  3. "EntityFramework.SqlServer": "7.0.0-beta1"

Le dipendenze 1 e 3 ci servono per integrare EF nel nostro progetto ed “informare” che andremo a lavorare utilizzando EF per SQL Server (dato che nella nuova versione, il provider di EF puo’ essere utilzzato nativamente per interagire con SqlServer, SqlLite, AzureTableStorage e InMemory, quindi non solo database relazionali), la dipendenza 3 ci serve per utilizzare i comandi di DB Migration all’interno del nostro progetto.

Sempre in Project.json aggiungiamo la sezione Commands con la relativa voce “EF”:

"commands": {
    "ef": "EntityFramework.Commands"
},

 

Cosi’ che alla fine delle modifiche il file Project.json sia simile a quanto illustrato nella figura seguente:

image


Aggiungiamo al progetto un file di tipo “ASP.NET Configuration file” (Config.json):

image

Il quale di Default si presenta in questo modo:

image

Nella sezione “Data\DefaultConnection” modifichiamo la voce ConnectionString editando la propietà Database oppure cambiando l’intera stringa di connessione, secondo di dove vogliamo ospitare il nostro database (Istanza di SQL Server Express piuttosto che LocalDB ad esempio). Tramite “NuGet Package Manager” (molto piu’ carino graficamente di quello precedente), aggiungiamo un riferimento al Package “Microsoft.Framework.ConfigurationModel.Json” :

image

Aggiungiamo al progetto il file Startup.cs:

image

E modifichiamolo come segue:

1 public class Startup 2 { 3 public static Microsoft.Framework.ConfigurationModel.IConfiguration Configuration { get; set; } 4 5 static Startup() 6 { 7 Configuration = new Microsoft.Framework.ConfigurationModel.Configuration() 8 .AddJsonFile("config.json").AddEnvironmentVariables(); 9 } 10 }

Aggiungiamo al progetto due nuovi classi C#, “Item” e “ItemDB”, dove “ItemDB” è la classe derivata da System.Data.Entity.DbContext ed “Item” il Data Model:

1 public class Item 2 { 3 public int Id { get; set; } 4 public string Code { get; set; } 5 public string Description { get; set; } 6 } 7 8 public class ItemDB : DbContext 9 { 10 public DbSet<Item> Items { get; set; } 11 12 protected override void OnConfiguring(DbContextOptions options) 13 { 14 options.UseSqlServer(Startup.Configuration.Get("Data:DefaultConnection:ConnectionString")); 15 } 16 }

Il nuovo metodo OnConfigure di cui abbiamo eseguito l’override ci permette di specificare quale Data Provider (nel nostro caso SqlServer) lavorerà con il nostro DbContext. UseSqlServer accetta come parametro  una stringa di connessione che recuperiamo dal file Config.json tramite la proprietà Configuration (Microsoft.Framework.ConfigurationModel.IConfiguration) presente nella classe Startup.cs.

Per utilizzare EF Migrations, non è ancora finita, in quanto è necessario installare e configurare KVM (K Version Manager), sul sito è presente una piccola guida all’installazione.

Apriamo un’istanza di Windows PowerShell (o Command Prompt secondo le preferenze) e ci spostiamo nella directory del nostro progetto, dopo digitiamo il comando “K ef migration add initial”:

image

Se tutto è stato eseguito correttamente, nel nostro progetto viene aggiunta la classica cartella “Migrations” con tutti i file necessari:

image

Applichiamo quindi il nostro “piano di migrazione” tramite il comando “migration apply”:

image

Ora possiamo testare che tutto l’Ambaradan (Smile) funzioni, modificando la classe Programs.cs in questo modo:

1 public void Main(string[] args) 2 { 3 ////Save data. 4 using (ItemDB db = new ItemDB()) 5 { 6 db.Items.Add(new Item() 7 { 8 Code = "Item #1", 9 Description = "Description #1" 10 }); 11 12 db.SaveChanges(); 13 } 14 15 ////Load data. 16 using (ItemDB db = new ItemDB()) 17 { 18 foreach (Item item in db.Items) 19 { 20 Console.WriteLine("Item Id: {0}, Code: {1}, Description : {2}", 21 item.Id, item.Code, item.Description); 22 } 23 } 24 25 Console.ReadLine(); 26 }

E poi avviando il tutto con un bel F5:

image

Sicuramente la versione 7 di EF è ancora “poco” matura per essere utiizzata in progetti reali, ma questo esempio vuole essere un punto di partenza per scoprire quali novità ci attendono Smile

Print | posted on Sunday, November 30, 2014 12:21 PM | Filed Under [ ASP.NET 5 Entity Framework 7 Visual Studio 2015 ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET