EF 6.0 What's New - EF@Work

1,099 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,099
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

EF 6.0 What's New - EF@Work

  1. 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. 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. 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. 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)
  5. 5. EF@Work • Interception/SQL logging • AddRange • RemoveRange EF6 (beta 1), cosa c’è di nuovo (3/3)
  6. 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. 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());
  8. 8. 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)
  9. 9. EF@Work Configuration Conventions Attributi Custom Code First Conventions (CA) [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] public class NonUnicodeAttribute : Attribute { … }
  10. 10. EF@Work Model Based Conventions Sono le piu’ potenti (Low-Level) Manipolazione metadata utilizzati da EF IDbConvention IEdmConvention IDbMappingConvention Code First Conventions (MBC)
  11. 11. EF@Work Ordine di applicazioni LightweightConventions IConfigurationConvention e EdmConvention IDbConvention IDbMappingConvention Code First Conventions
  12. 12. EF@Work DEMO Code First Conventions
  13. 13. EF@Work CF Configuration AddFromAssembly Assembly configurationAssembly = Assembly.LoadFile(@"CarRental.EF6.Configuration.dll"); modelBuilder.Configurations.AddFromAssembly(configurationAssembly);
  14. 14. EF@Work DEMO CF Configuration AddFromAssembly
  15. 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. 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. 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")));
  18. 18. EF@Work DEMO CF Stored Procedure Mapping
  19. 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. 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
  21. 21. EF@Work DEMO CF Async Query e Save
  22. 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
  23. 23. EF@Work DEMO EF6 Multi-Tenant Migrations
  24. 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
  25. 25. EF@Work DEMO Code First Migrations Operations
  26. 26. EF@Work Domande & (possibili) Risposte
  27. 27. EF@Work Grazie agli sponsor
  28. 28. EF@Work Per voi sono solo 10 minuti persi, per noi è utilissimo per poter crescere e migliorare!
  29. 29. 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“
  30. 30. EF@Work Domain Model
  31. 31. EF@Work Tre tipologie: Table Per Hierachy Table Per Type Table Per Concrete Class 1) Ereditarietà
  32. 32. EF@Work TPH – Table per Hierarchy Ereditarietà
  33. 33. EF@Work TPT – Table per Type Ereditarietà
  34. 34. EF@Work TPC – Table per Concrete Class Ereditarietà
  35. 35. EF@Work 2) Relazioni Ricorsive
  36. 36. EF@Work 3) Spatial Type - DbGeography
  37. 37. EF@Work Almeno possibili soluzioni: Complex Type Uso di proprietà 4) System.Drawing.Color
  38. 38. EF@Work 5) Protected Properties
  39. 39. EF@Work 6) Entità Disconnesse (N-Tier) Internet
  40. 40. EF@Work Repository Pattern
  41. 41. EF@Work 7) Testing

×