EF 6.0 What's New - EF@Work

41
@ EF@Work @ EF@Work EF 6.0 What's new Pietro Libro http://blogs.ugidotnet.org/ PietroLibroBlog [email protected] http://www.linkedin.com/in/pietrolibro

description

Presentation of talk "EF6 - What's New" - Event "EF@Work" organized by DomusDotNet - Rome, Italy

Transcript of EF 6.0 What's New - EF@Work

Page 1: EF 6.0 What's New - EF@Work

@EF@Wor

k

@EF@Work

EF 6.0 What's new

Pietro Librohttp://blogs.ugidotnet.org/PietroLibroBlog

[email protected]

http://www.linkedin.com/in/pietrolibro…

Page 2: EF 6.0 What's New - EF@Work

@EF@Wor

k

EF6 (beta 1), cosa c’è di nuovoEF6 Code First

Custom Code First ConventionsStored Procedures MappingAsync-await

EF6 MigrationsCode First Migration OperationsMulti-Tenant Migrations

Agenda

Page 3: EF 6.0 What's New - EF@Work

@EF@Wor

k

• 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)

Page 4: EF 6.0 What's New - EF@Work

@EF@Wor

k

• 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)

Page 5: EF 6.0 What's New - EF@Work

@EF@Wor

k

• Interception/SQL logging• AddRange• RemoveRange

EF6 (beta 1), cosa c’è di nuovo (3/3)

Page 6: EF 6.0 What's New - EF@Work

@EF@Wor

k

Code First => Convenzioni (default)Es: Definizione della chiave primariaNon sempre ideali\sufficienti per i nostri modelli

Utilizzo di Workaround o modifica del modello

Soluzione: Custom Code First Conventions

Code First Conventions

Page 7: EF 6.0 What's New - EF@Work

@EF@Wor

k

Lightweight ConventionsFiltriamo ”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());

Page 8: EF 6.0 What's New - EF@Work

@EF@Wor

k

Configuration ConventionsIConfigurationConvention<T1,T2>T1 in {Type,PropertyInfo}T2:

ModelConfigurationEntityTypeConfigurationPropertyConfiguration

NavigationConfigurationPrimitivePropertyConfiguration

DateTimePropertyConfigurationDecimalPropertyConfigurationLengthPropertyConfiguration

BinaryPropertyConfigurationStringPropertyConfiguration

Code First Conventions (CC)

Page 9: EF 6.0 What's New - EF@Work

@EF@Wor

k

Configuration ConventionsAttributi Custom

Code First Conventions (CA)

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]public class NonUnicodeAttribute : Attribute     {     …}

Page 10: EF 6.0 What's New - EF@Work

@EF@Wor

k

Model Based ConventionsSono le piu’ potenti (Low-Level)Manipolazione metadata utilizzati da EF

IDbConventionIEdmConventionIDbMappingConvention

Code First Conventions (MBC)

Page 11: EF 6.0 What's New - EF@Work

@EF@Wor

k

Ordine di applicazioni

LightweightConventionsIConfigurationConvention e EdmConventionIDbConventionIDbMappingConvention

Code First Conventions

Page 12: EF 6.0 What's New - EF@Work

@EF@Wor

k

DEMO

Code First Conventions

Page 13: EF 6.0 What's New - EF@Work

@EF@Wor

kCF Configuration AddFromAssembly

Assembly configurationAssembly = Assembly.LoadFile(@"CarRental.EF6.Configuration.dll");modelBuilder.Configurations.AddFromAssembly(configurationAssembly);

Page 14: EF 6.0 What's New - EF@Work

@EF@Wor

k

DEMO

CF Configuration AddFromAssembly

Page 15: EF 6.0 What's New - EF@Work

@EF@Wor

k

In EF5:Nessuna possibilità di mapping per Insert\Delete\UpdateMapping di Entities direttamente su tabelleSqlQuery<>, ”SELECT” tramite Stored Procedures

CF Stored Procedure Mapping

Page 16: EF 6.0 What's New - EF@Work

@EF@Wor

k

EF6 Code First:Mapping di Stored Procedure

Solo tramite Fluent APIIn futuro (forse) attributi

Per singola EntitàI\U\D tramite Stored Procedure

oI\U\D tramite Fluent API

L’uso misto non è previsto !

CF Stored Procedure Mapping

Page 17: EF 6.0 What's New - EF@Work

@EF@Wor

k

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")));

Page 18: EF 6.0 What's New - EF@Work

@EF@Wor

k

DEMO

CF Stored Procedure Mapping

Page 19: EF 6.0 What's New - EF@Work

@EF@Wor

k

EF6 supporta il pattern async-await (.NET 4.5)Goals

Server ScalabilityClient Responseviness

Non GoalsThread SafetyAsync Lazy Loading

CF Async Query e Save

Page 20: EF 6.0 What's New - EF@Work

@EF@Wor

k

Versione ”async” per:Operazioni di I\O (bottleneck)

ToLists(),for each, SqlQuery ecc ...

Operazioni per l’invio di comandi al DBSaveChanges, ExecuteSqlCommand

Metodi con doppia Versione, esempio:SaveChangesSaveChangesAsync

No Async per creazione database/schema

CF Async Query e Save

Page 21: EF 6.0 What's New - EF@Work

@EF@Wor

k

DEMO

CF Async Query e Save

Page 22: EF 6.0 What's New - EF@Work

@EF@Wor

k

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

Page 23: EF 6.0 What's New - EF@Work

@EF@Wor

k

DEMO

EF6 Multi-Tenant Migrations

Page 24: EF 6.0 What's New - EF@Work

@EF@Wor

k

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:MigrationOperationDbMigrationSqlServerMigrationSqlGenerator (dip. provider)

Code First Migrations Operations

Page 25: EF 6.0 What's New - EF@Work

@EF@Wor

k

DEMO

Code First Migrations Operations

Page 26: EF 6.0 What's New - EF@Work

@EF@Wor

kDomande & (possibili) Risposte

Page 27: EF 6.0 What's New - EF@Work

@EF@Wor

kGrazie agli sponsor

Page 28: EF 6.0 What's New - EF@Work

@EF@Wor

k

http://tinyurl.com/EFatWork

Per voi sono solo 10 minuti persi, per noi è utilissimo per poter crescere e migliorare!

Page 29: EF 6.0 What's New - EF@Work

@EF@Wor

k

1) Ereditarietà2) Relazioni Ricorsive3) Spatial Type – DbGeography4) System.Drawing.Color5) Protected Properties6) Entità Disconnesse (N-Tier)7) Testing

EF Real Life con "casi pelosi“

Page 30: EF 6.0 What's New - EF@Work

@EF@Wor

kDomain Model

Page 31: EF 6.0 What's New - EF@Work

@EF@Wor

k

Tre tipologie:

Table Per HierachyTable Per TypeTable Per Concrete Class

1) Ereditarietà

Page 32: EF 6.0 What's New - EF@Work

@EF@Wor

k

TPH – Table per Hierarchy

Ereditarietà

Optional

BaseDomainObject

Abstract Class

Accessory

Optional

Class

Service

Optional

Class

Page 33: EF 6.0 What's New - EF@Work

@EF@Wor

k

TPT – Table per Type

Ereditarietà

Car

Vehicle

ClassVan

Vehicle

Class

Vehicle

BaseDomainObject

Abstract Class

Page 34: EF 6.0 What's New - EF@Work

@EF@Wor

k

TPC – Table per Concrete Class

Ereditarietà

Car

Vehicle

ClassVan

Vehicle

Class

Vehicle

BaseDomainObject

Abstract Class

Page 35: EF 6.0 What's New - EF@Work

@EF@Wor

k2) Relazioni Ricorsive

Page 36: EF 6.0 What's New - EF@Work

@EF@Wor

k3) Spatial Type - DbGeography

Page 37: EF 6.0 What's New - EF@Work

@EF@Wor

k

Almeno possibili soluzioni:

Complex TypeUso di proprietà

4) System.Drawing.Color

Page 38: EF 6.0 What's New - EF@Work

@EF@Wor

k5) Protected Properties

Page 39: EF 6.0 What's New - EF@Work

@EF@Wor

k6) Entità Disconnesse (N-Tier)

Internet

Page 40: EF 6.0 What's New - EF@Work

@EF@Wor

kRepository Pattern

Page 41: EF 6.0 What's New - EF@Work

@EF@Wor

k7) Testing