1. EF@Work
EF@Work
EF 6.0 What's new
Pietro Libro
http://blogs.ugidotnet.org/PietroLibroBlog
pietro.libro@domusdotnet.org
http://www.linkedin.com/in/pietrolibro
…
2. EF@Work
EF6 (beta 1), cosa c’è di nuovo
EF6 Code First
Custom Code First Conventions
Stored Procedures Mapping
Async-await
EF6 Migrations
Code First Migration Operations
Multi-Tenant Migrations
Agenda
3. EF@Work
• Async - Await Pattern
• Custom Code Firsts Conventions
• Code First Mapping per
Insert/Update/Delete Stored Procedures
• Code-Based Configuration
• Tabella Migration History configurabile
• Utilizzo di Contexts multipli per singolo
DB
EF6 (beta 1), cosa c’è di nuovo
(1/3)
4. EF@Work
• Creazione DbContext su connessione
aperta
• Transazioni:
• Cambio dell’ Isolation Level di default
• Read_Committed_Snapshot
• Nuove API per la gestione personalizzata
delle transazioni
• Supporto a Enums e Spatial anche su
.NET 4.0
EF6 (beta 1), cosa c’è di nuovo
(2/3)
6. EF@Work
Code First => Convenzioni (default)
Es: Definizione della chiave primaria
Non sempre idealisufficienti per i nostri modelli
Utilizzo di Workaround o modifica del modello
Soluzione:
Custom Code First Conventions
Code First Conventions
7. EF@Work
Lightweight Conventions
Filtriamo ”cosa” vogliamo configurare e lo
configuriamo
Al di sopra delle ”Configuration Conventions”
Code First Conventions (LC)
modelBuilder.Properties()
.Where(x => x.Name.Equals("KeyColumn"))
.Configure(x => x.IsKey());
10. EF@Work
Model Based Conventions
Sono le piu’ potenti (Low-Level)
Manipolazione metadata utilizzati da EF
IDbConvention
IEdmConvention
IDbMappingConvention
Code First Conventions (MBC)
15. EF@Work
In EF5:
Nessuna possibilità di mapping per InsertDeleteUpdate
Mapping di Entities direttamente su tabelle
SqlQuery<>, ”SELECT” tramite Stored Procedures
CF Stored Procedure Mapping
16. EF@Work
EF6 Code First:
Mapping di Stored Procedure
Solo tramite Fluent API
In futuro (forse) attributi
Per singola Entità
IUD tramite Stored Procedure
o
IUD tramite Fluent API
L’uso misto non è previsto !
CF Stored Procedure Mapping
17. EF@Work
Se rispettiamo le convenzioni
Oppure
CF Stored Procedure Mapping
modelBuilder.Entity<Domain.Car>().MapToStoredProcedures();
modelBuilder.Entity<Domain.Car>().MapToStoredProcedures(
s => s.Insert(x => x.HasName("AddCar")));
modelBuilder.Entity<Domain.Car>().MapToStoredProcedures(
s => s.Insert(x=>x.Parameter(p=>p.HP , "parHP")));
19. EF@Work
EF6 supporta il pattern async-await (.NET
4.5)
Goals
Server Scalability
Client Responseviness
Non Goals
Thread Safety
Async Lazy Loading
CF Async Query e Save
20. EF@Work
Versione ”async” per:
Operazioni di IO (bottleneck)
ToLists(),for each, SqlQuery ecc ...
Operazioni per l’invio di comandi al DB
SaveChanges, ExecuteSqlCommand
Metodi con doppia Versione, esempio:
SaveChanges
SaveChangesAsync
No Async per creazione database/schema
CF Async Query e Save
22. EF@Work
Multi-Tenant Database
• Abilità di separare tdifferenti gruppi di tabelle
utilizzate per scopi diversi
Migrations di DbContext multipli, possibili grazie a:
• Modelbuilder.HasDefaultSchema(”...”);
• Custom Migration History Table
• -MigrationDirectory
EF6 Multi-Tenant Migrations
24. EF@Work
Con EF5 abbiamo a disposizione:
API per le operazioni più comuni (Create Index)
Esecuzione di SQL arbitrario, Sql (”CREATE....”)
Dipendenza dal database
Con EF6 in più abbiamo:
MigrationOperation
DbMigration
SqlServerMigrationSqlGenerator (dip. provider)
Code First Migrations Operations