SlideShare a Scribd company logo
1 of 41
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
…
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
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)
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)
EF@Work
• Interception/SQL logging
• AddRange
• RemoveRange
EF6 (beta 1), cosa c’è di nuovo
(3/3)
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
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());
EF@Work
Configuration Conventions
IConfigurationConvention<T1,T2>
T1 in {Type,PropertyInfo}
T2:
ModelConfiguration
EntityTypeConfiguration
PropertyConfiguration
NavigationConfiguration
PrimitivePropertyConfiguration
DateTimePropertyConfiguration
DecimalPropertyConfiguration
LengthPropertyConfiguration
BinaryPropertyConfiguration
StringPropertyConfiguration
Code First Conventions (CC)
EF@Work
Configuration Conventions
Attributi Custom
Code First Conventions (CA)
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class NonUnicodeAttribute : Attribute
{
…
}
EF@Work
Model Based Conventions
Sono le piu’ potenti (Low-Level)
Manipolazione metadata utilizzati da EF
IDbConvention
IEdmConvention
IDbMappingConvention
Code First Conventions (MBC)
EF@Work
Ordine di applicazioni
LightweightConventions
IConfigurationConvention e EdmConvention
IDbConvention
IDbMappingConvention
Code First Conventions
EF@Work
DEMO
Code First Conventions
EF@Work
CF Configuration
AddFromAssembly
Assembly configurationAssembly =
Assembly.LoadFile(@"CarRental.EF6.Configuration.dll");
modelBuilder.Configurations.AddFromAssembly(configurationAssembly);
EF@Work
DEMO
CF Configuration
AddFromAssembly
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
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
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")));
EF@Work
DEMO
CF Stored Procedure Mapping
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
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
EF@Work
DEMO
CF Async Query e Save
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
EF@Work
DEMO
EF6 Multi-Tenant Migrations
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
EF@Work
DEMO
Code First Migrations Operations
EF@Work
Domande & (possibili) Risposte
EF@Work
Grazie agli sponsor
EF@Work
Per voi sono solo 10 minuti persi,
per noi è utilissimo per poter
crescere e migliorare!
EF@Work
1) Ereditarietà
2) Relazioni Ricorsive
3) Spatial Type – DbGeography
4) System.Drawing.Color
5) Protected Properties
6) Entità Disconnesse (N-Tier)
7) Testing
EF Real Life con "casi pelosi“
EF@Work
Domain Model
EF@Work
Tre tipologie:
Table Per Hierachy
Table Per Type
Table Per Concrete Class
1) Ereditarietà
EF@Work
TPH – Table per Hierarchy
Ereditarietà
EF@Work
TPT – Table per Type
Ereditarietà
EF@Work
TPC – Table per Concrete Class
Ereditarietà
EF@Work
2) Relazioni Ricorsive
EF@Work
3) Spatial Type - DbGeography
EF@Work
Almeno possibili soluzioni:
Complex Type
Uso di proprietà
4) System.Drawing.Color
EF@Work
5) Protected Properties
EF@Work
6) Entità Disconnesse (N-Tier)
Internet
EF@Work
Repository Pattern
EF@Work
7) Testing

More Related Content

Viewers also liked

Memoria plan proxecta. final
Memoria plan proxecta. finalMemoria plan proxecta. final
Memoria plan proxecta. finalsenlleiro2
 
Presentatie zonnepanelen eric brandt 26 juni 2013
Presentatie zonnepanelen eric brandt 26 juni 2013Presentatie zonnepanelen eric brandt 26 juni 2013
Presentatie zonnepanelen eric brandt 26 juni 2013jolandeschuurman
 
Outros informes
Outros informesOutros informes
Outros informessenlleiro2
 
Rota 3 6º curso
Rota 3   6º cursoRota 3   6º curso
Rota 3 6º cursosenlleiro2
 
شريف عرفة لماذا من حولك أغبياء؟
شريف عرفة   لماذا من حولك أغبياء؟شريف عرفة   لماذا من حولك أغبياء؟
شريف عرفة لماذا من حولك أغبياء؟Hammou Mohammed
 
Dog Years Dilemma
Dog Years DilemmaDog Years Dilemma
Dog Years DilemmaMHS
 
Stamp Stumper POD
Stamp Stumper PODStamp Stumper POD
Stamp Stumper PODMHS
 
Mi historia
Mi historiaMi historia
Mi historiarocio
 
130614 ist constructivo
130614 ist constructivo130614 ist constructivo
130614 ist constructivoJose Milara
 
الفحص الدوري للإنسان د.عبدالرحمن اليوسف
الفحص الدوري للإنسان د.عبدالرحمن اليوسفالفحص الدوري للإنسان د.عبدالرحمن اليوسف
الفحص الدوري للإنسان د.عبدالرحمن اليوسفdr_alwajeeh
 
130614 ist arquitectonico
130614 ist arquitectonico130614 ist arquitectonico
130614 ist arquitectonicoJose Milara
 
ต่อมหมวกไต
ต่อมหมวกไตต่อมหมวกไต
ต่อมหมวกไตบอ บาส
 

Viewers also liked (20)

007
007007
007
 
Memoria plan proxecta. final
Memoria plan proxecta. finalMemoria plan proxecta. final
Memoria plan proxecta. final
 
Lemos teatro
Lemos teatroLemos teatro
Lemos teatro
 
Presentatie zonnepanelen eric brandt 26 juni 2013
Presentatie zonnepanelen eric brandt 26 juni 2013Presentatie zonnepanelen eric brandt 26 juni 2013
Presentatie zonnepanelen eric brandt 26 juni 2013
 
Outros informes
Outros informesOutros informes
Outros informes
 
Rota 3 6º curso
Rota 3   6º cursoRota 3   6º curso
Rota 3 6º curso
 
วิชาเคมี
วิชาเคมีวิชาเคมี
วิชาเคมี
 
شريف عرفة لماذا من حولك أغبياء؟
شريف عرفة   لماذا من حولك أغبياء؟شريف عرفة   لماذا من حولك أغبياء؟
شريف عرفة لماذا من حولك أغبياء؟
 
Math152
Math152Math152
Math152
 
Dog Years Dilemma
Dog Years DilemmaDog Years Dilemma
Dog Years Dilemma
 
Stamp Stumper POD
Stamp Stumper PODStamp Stumper POD
Stamp Stumper POD
 
Mi historia
Mi historiaMi historia
Mi historia
 
130614 ist constructivo
130614 ist constructivo130614 ist constructivo
130614 ist constructivo
 
Presentación proyecto sicc
Presentación proyecto siccPresentación proyecto sicc
Presentación proyecto sicc
 
الفحص الدوري للإنسان د.عبدالرحمن اليوسف
الفحص الدوري للإنسان د.عبدالرحمن اليوسفالفحص الدوري للإنسان د.عبدالرحمن اليوسف
الفحص الدوري للإنسان د.عبدالرحمن اليوسف
 
006
006006
006
 
012
012012
012
 
130614 ist arquitectonico
130614 ist arquitectonico130614 ist arquitectonico
130614 ist arquitectonico
 
010
010010
010
 
ต่อมหมวกไต
ต่อมหมวกไตต่อมหมวกไต
ต่อมหมวกไต
 

Similar to EF 6.0 What's New - EF@Work

Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroAndrea Dottor
 
MOOC Piattaforme digitali per la gestione del territorio - 4.4
MOOC Piattaforme digitali per la gestione del territorio - 4.4MOOC Piattaforme digitali per la gestione del territorio - 4.4
MOOC Piattaforme digitali per la gestione del territorio - 4.4Alessandro Bogliolo
 
Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Andrea Dottor
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinFabio Cozzolino
 
Entity Framework 4 vs NHibernate 3
Entity Framework 4 vs NHibernate 3Entity Framework 4 vs NHibernate 3
Entity Framework 4 vs NHibernate 3Martino Bordin
 
Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioningNicolò Carandini
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioningNicolò Carandini
 
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfrescoMirco Leo
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNetMauro Servienti
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Massimo Bonanni
 
Oltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetOltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetVito Flavio Lorusso
 

Similar to EF 6.0 What's New - EF@Work (20)

Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuro
 
ASP.NET Core essentials
ASP.NET Core essentialsASP.NET Core essentials
ASP.NET Core essentials
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
MOOC Piattaforme digitali per la gestione del territorio - 4.4
MOOC Piattaforme digitali per la gestione del territorio - 4.4MOOC Piattaforme digitali per la gestione del territorio - 4.4
MOOC Piattaforme digitali per la gestione del territorio - 4.4
 
Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Entity Framework 4 vs NHibernate 3
Entity Framework 4 vs NHibernate 3Entity Framework 4 vs NHibernate 3
Entity Framework 4 vs NHibernate 3
 
Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioning
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioning
 
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfresco
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet
 
Html5 e PHP
Html5 e PHPHtml5 e PHP
Html5 e PHP
 
Tfs Basic - Quick Intro
Tfs Basic - Quick IntroTfs Basic - Quick Intro
Tfs Basic - Quick Intro
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!
 
#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)
 
Oltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetOltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale Set
 
Mobile e Smart Client
Mobile e Smart ClientMobile e Smart Client
Mobile e Smart Client
 

More from Pietro Libro

.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il MobilePietro Libro
 
Introduzione ai Coded UI Tests
Introduzione ai Coded UI TestsIntroduzione ai Coded UI Tests
Introduzione ai Coded UI TestsPietro Libro
 
Asp.net web api reloaded
Asp.net web api reloadedAsp.net web api reloaded
Asp.net web api reloadedPietro Libro
 
Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2
Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2
Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2Pietro Libro
 
Applicazioni RESTful con ASP.NET Web Api
Applicazioni RESTful con ASP.NET Web ApiApplicazioni RESTful con ASP.NET Web Api
Applicazioni RESTful con ASP.NET Web ApiPietro Libro
 

More from Pietro Libro (6)

.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
Introduzione ai Coded UI Tests
Introduzione ai Coded UI TestsIntroduzione ai Coded UI Tests
Introduzione ai Coded UI Tests
 
Asp.net web api reloaded
Asp.net web api reloadedAsp.net web api reloaded
Asp.net web api reloaded
 
Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2
Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2
Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2
 
Applicazioni RESTful con ASP.NET Web Api
Applicazioni RESTful con ASP.NET Web ApiApplicazioni RESTful con ASP.NET Web Api
Applicazioni RESTful con ASP.NET Web Api
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 

EF 6.0 What's New - EF@Work