Riprendiamo l’esempio del post precedente per testare l’integrazione tra EF7 e lo storage di Azure. Apriamo NuGet ed installiamo il package “EntityFramework.AzureTableStorage” (sempre in beta):
Modifichiamo il codice della classe ItemDB in questo modo:
1 public class ItemDB : DbContext
2 {
3 public DbSet<Item> Items { get; set; }
4
5 protected override void OnConfiguring(DbContextOptions options)
6 {
7 options.UseAzureTableStorage("[Storage_Name]", "[Secret_Key");
8 }
9
10 protected override void OnModelCreating(ModelBuilder modelBuilder)
11 {
12 modelBuilder.Entity<Item>().ForAzureTableStorage()
13 .PartitionAndRowKey(a => a.CategoryId, a => a.Id)
14 .Table("Items");
15 }
16 }
Rispetto all’esempio precedente è stato rimosso il metodo di estensione UseSqlServer ed aggiunto un degli overload di UseAzureTableStorage che accetta in ingresso due parametri: accountName ed accountKey. Tramite l’override di OnModelCreating andiamo ad istruire il runtime sulle propietà della classe Item che rappresentato rispettivamente la PartitionKey e la RowKey del Table Storage su Azure. Modifichiamo il file Project.json commentando la voce aspnetcore50 nella sezione frameworks:
La classe Item modificata è la seguente:
1 public class Item
2 {
3 public int Id { get; set; }
4 public int CategoryId { get; set; }
5 public string Code { get; set; }
6 public string Description { get; set; }
7 }
Infine modifichiamo la classe Program.cs:
1 public void Main(string[] args)
2 {
3 using (ItemDB db = new ItemDB())
4 {
5 int nextId = new Random().Next(100000);
6
7 db.Items.Add(new Item()
8 {
9 Id = nextId,
10 Code = "Item #" + nextId,
11 Description = "Description #" + nextId
12 });
13
14 db.SaveChanges();
15 }
16
17 using (ItemDB db = new ItemDB())
18 {
19 foreach (Item item in db.Items)
20 {
21 Console.WriteLine("Item Id: {0}, Code: {1}, Description : {2}",
22 item.Id, item.Code, item.Description);
23 }
24 }
25
26 Console.ReadLine();
27 }
Proviamo quindi ad eseguire l’applicazione:
Ulteriore prova che tutto funzioni correttamente si puo’ avere utizzando l’”Azure Storage Explorer”: