1
Entity Framework 7:
Neuerungen und Änderungen beim Datenzugriff
Manfred Steyer
ManfredSteyer
Side-Projects
Page  2
www....
2
Inhalt
Motivation
Entity Framework heute
Aktuelle Entwicklungen
Entity Framework morgen
DEMO
Fazit
Folie 3
MOTIVA...
3
ADO.NET "in a Nutshell"
Page  5
using (DbConnection conn = new SqlConnection(
"Data Source=(LocalDb)v11.0;Initial Catal...
4
ENTITY FRAMEWORK HEUTE
Page  7
O/R-Mapper
EF
5
Spielarten
Folie 9
• Model First
• DB First
Mapping via XML
• Code First
• Code First mit Reverse Engineering
Mapping v...
6
DbContext
Objektmodell
Folie 11
ObjectContext
AKTUELLE ENTWICKLUNGEN
Page  12
7
Aktuelle Entwicklungen
Folie 13
ENTITY FRAMEWORK
MORGEN
Page  14
8
Ziele
Reichweite
• .NET Core, WinRT
• NoSQL
Aufräumen
• Code First
• RIP ObjectContext
Folie 15
Nicht-Ziele
Folie 16
•...
9
Migration
Code muss abgeändert werden
Bestehende Version 6.x existiert weiterhin
Funktionsumfang
Folie 18
EF 6
EF 7
10
Funktionsumfang
Folie 19
EF 6
EF 7.x+
Einige Einschränkungen in 7.0
 M:N-Beziehungen
 Vorerst mit jeweils zwei 1:N-B...
11
7.0 oder 6.x
Web mit
.NET Core
EF 7.0
Mobile EF 7.0
Sonst EF 6.0
Code Only
MODELL ERSTELLEN
Page  22
12
NuGet-Pakete
EntityFramework.Commands
EntityFramework.SqlServer
VS 2013: http://tinyurl.com/ef7-vs2013
Folie 23
Ent...
13
Entitäten
public class Hotel
{
public int HotelId { get; set; }
public string Bezeichnung { get; set; }
public int Ster...
14
Datenbank erzeugen
context.Database.EnsureDeleted()
context.Database.EnsureCreated()
Folie 27
DEMO
Page  28
15
OBJEKTE ABRUFEN
Objekte laden
using (var ctx = new HotelDbContext())
{
var regionen = ctx
.Region
.Where(r => r.Name ==...
16
OBJEKTE MANIPULIEREN
Objekte anlegen
Benachbarte Objekte werden in EF 7
im Gegensatz zu EF 6 nicht automatisch eingefüg...
17
Überwachen von Objekten
 DbContext überwacht sämtliche ihm bekannten Objekte auf
Änderungen
 Neu hinzugefügt Objekte
...
18
Abgehängte Objekte aktualisieren
Benachbarte Objekte werden
nicht angehängt oder aktualisiert
public void Update(Hotel ...
19
KONVENTIONEN ÜBER
FLUENT-API ANPASSEN
Page  37
OnModelCreating
Page  38
public class HotelContext : DbContext
{
[…]
p...
20
DEMO
Page  39
Fazit
O/R-Mapping automatisiert monotone Aufgaben
Vereint Vorteile von OO und RDBMS
Frühjahresputz mi...
21
[mail] manfred.steyer@SOFTWAREarchitekt.at
[web] SOFTWAREarchitekt.at
[twitter] ManfredSteyer
Kontakt
Nächste SlideShare
Wird geladen in …5
×

Überblick zu EF7 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015

292 Aufrufe

Veröffentlicht am

Überblick zu EF7 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015

Veröffentlicht in: Internet
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
292
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
4
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Überblick zu EF7 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015

  1. 1. 1 Entity Framework 7: Neuerungen und Änderungen beim Datenzugriff Manfred Steyer ManfredSteyer Side-Projects Page  2 www.software-engineering-leadership.de
  2. 2. 2 Inhalt Motivation Entity Framework heute Aktuelle Entwicklungen Entity Framework morgen DEMO Fazit Folie 3 MOTIVATION Page  4
  3. 3. 3 ADO.NET "in a Nutshell" Page  5 using (DbConnection conn = new SqlConnection( "Data Source=(LocalDb)v11.0;Initial Catalog=HotelDb;[…]")) { conn.Open(); using (DbCommand cmd = conn.CreateCommand()) { cmd.CommandText = "select * from Hotel where RegionId = 3"; using (DbDataReader r = cmd.ExecuteReader()) { while (r.Read()) { Console.WriteLine(r["Bezeichnung"]); } } } } Entity Framework •O/R-Mapper •Datenbankunabhängigkeit •Abfragen via LINQ
  4. 4. 4 ENTITY FRAMEWORK HEUTE Page  7 O/R-Mapper EF
  5. 5. 5 Spielarten Folie 9 • Model First • DB First Mapping via XML • Code First • Code First mit Reverse Engineering Mapping via Code Code First erscheint überlegen Folie 10 Sowohl DB-First als auch Model- First möglich Quellcode- verwaltung Für Entwickler intuitiver Mehr Freiheiten für Entwickler Code- Konfiguration zur Laufzeit Konventionen Migrations
  6. 6. 6 DbContext Objektmodell Folie 11 ObjectContext AKTUELLE ENTWICKLUNGEN Page  12
  7. 7. 7 Aktuelle Entwicklungen Folie 13 ENTITY FRAMEWORK MORGEN Page  14
  8. 8. 8 Ziele Reichweite • .NET Core, WinRT • NoSQL Aufräumen • Code First • RIP ObjectContext Folie 15 Nicht-Ziele Folie 16 • Ja, aber nur wo es sinnvoll ist API- Änderungen • Ja, aber Unterschiede zu RDBMS sollen nicht durch Abstraktion verborgen werden NoSQL
  9. 9. 9 Migration Code muss abgeändert werden Bestehende Version 6.x existiert weiterhin Funktionsumfang Folie 18 EF 6 EF 7
  10. 10. 10 Funktionsumfang Folie 19 EF 6 EF 7.x+ Einige Einschränkungen in 7.0  M:N-Beziehungen  Vorerst mit jeweils zwei 1:N-Beziehungen modellieren  Lazy Loading  Vererbungsbeziehungen nur eingeschränkt  Komplexe Typen  Validieren vor dem Speichern  Validierung findet nur in DB statt  Eigene Konventionen  Keine Stored Procedures
  11. 11. 11 7.0 oder 6.x Web mit .NET Core EF 7.0 Mobile EF 7.0 Sonst EF 6.0 Code Only MODELL ERSTELLEN Page  22
  12. 12. 12 NuGet-Pakete EntityFramework.Commands EntityFramework.SqlServer VS 2013: http://tinyurl.com/ef7-vs2013 Folie 23 Entitäten Page  24 public class Region { public int RegionId { get; set; } public string Bezeichnung { get; set; } public List<Hotel> Hotels { get; set; } } Konvention für PK: Id oder Klassenname + Id
  13. 13. 13 Entitäten public class Hotel { public int HotelId { get; set; } public string Bezeichnung { get; set; } public int Sterne { get; set; } public int RegionId { get; set; } public Region Region { get; set; } } Konvention für FK: - PK der anderen Seite (RegionId) - Navigationseigenschaft+PK (RegionRegionId) - Typ+PK (RegionRegionId) Context Folie 26 public class HotelDbContext : DbContext { public DbSet<Hotel> Hotels { get; set; } public DbSet<HotelBuchung> HotelBuchungen { get; set; } public DbSet<Region> Region { get; internal set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer( @"Data Source=(localdb)ProjectsV12;[…]"); } }
  14. 14. 14 Datenbank erzeugen context.Database.EnsureDeleted() context.Database.EnsureCreated() Folie 27 DEMO Page  28
  15. 15. 15 OBJEKTE ABRUFEN Objekte laden using (var ctx = new HotelDbContext()) { var regionen = ctx .Region .Where(r => r.Name == "Hamburg") .OrderBy(r => r.Name) .ToList(); […] }
  16. 16. 16 OBJEKTE MANIPULIEREN Objekte anlegen Benachbarte Objekte werden in EF 7 im Gegensatz zu EF 6 nicht automatisch eingefügt public void Insert(Hotel h) { using (var ctx = new HotelDbContext()) { ctx.Hotel.Add(h); ctx.SaveChanges(); } }
  17. 17. 17 Überwachen von Objekten  DbContext überwacht sämtliche ihm bekannten Objekte auf Änderungen  Neu hinzugefügt Objekte  Geladene Objekte  Dazu kommt Dirty Checking zum Einsatz  SaveChanges überträgt diese Änderungen in die DB using(var ctx = new HotelDbContext()) { Hotel h = new Hotel(); h.Bezeichnung = "Hotel Mama"; h.RegionId = 3; h.Sterne = 4; ctx.Hotel.Add(h); ctx.SaveChanges(); h.Sterne++; ctx.SaveChanges(); } Objekte anlegen Ab hier ist h abgehängt (detached)
  18. 18. 18 Abgehängte Objekte aktualisieren Benachbarte Objekte werden nicht angehängt oder aktualisiert public void Update(Hotel h) { using (var ctx = new HotelDbContext()) { ctx.Hotel.Update(h); ctx.SaveChanges(); } } DEMO Page  36
  19. 19. 19 KONVENTIONEN ÜBER FLUENT-API ANPASSEN Page  37 OnModelCreating Page  38 public class HotelContext : DbContext { […] protected override void OnModelCreating( ModelBuilder modelBuilder) { […] } }
  20. 20. 20 DEMO Page  39 Fazit O/R-Mapping automatisiert monotone Aufgaben Vereint Vorteile von OO und RDBMS Frühjahresputz mit Version 7  Entfernen von Altlasten und Mehrgleisigkeiten Zeitpunkt passend vor Hintergrund von .NET Core Reichweite wird erhöht: WinRT und NoSQL Folie 40
  21. 21. 21 [mail] manfred.steyer@SOFTWAREarchitekt.at [web] SOFTWAREarchitekt.at [twitter] ManfredSteyer Kontakt

×