czwartek, 8 marca 2012

Entity Framework na przestrzeni wydań

Można powiedzieć, że Entity Framework przeżywa w ostatnim czasie renesans. Team który zajmuje się wdrażaniem nowych wersji wydaje kolejne wersje które zawierają wiele usprawnień, ulepszeń i oczywiście optymalizacji.
W gąszczu tych nowości można się poczuć zagubionym. W tym artykule postaram się przybliżyć co nowego dzieje się w popularnym ORMie.

Ogromną zaletą EF nad LINQ2SQL jest z pewnością wsparcie dla znakomitej większości baz danych. Listę gotowych providerów można znaleźć pod adresem: http://msdn.microsoft.com/en-us/data/dd363565.aspx.

EF pojawił się w świecie .NET wraz z wersją 3.5 SP1 (VS 2008). Wersja ta była na tyle uboga, iż oferowała jedynie podstawowe możliwości ORM takie jak generowanie schematu klas na podstawie bazy danych oraz podstawowe operacje na encjach.

Wersja 4.0 wyszła wraz z VS 2010. Wersja ta zawierała wiele ulepszeń oraz nowości, z których można wymienić takie jak:
  • Model First - na podstawie zaprojektowanych klas w narzędziu graficznym jest generowana baza danych
  • POCO - nie ma potrzeby dziedziczenia po klasie EntityObject
  • Lazy Loading - pobieranie danych w tle (gdy są potrzebne)
  • Code generators - możliwość dostosowania sposobu w jaki są generowane klasy
Następnym wydaniem był EF 4.1. Dodano w nim takie nowości jak:
  • możliwość instalacji poprzez konsolę NuGet
  • lekki obiekt DbContext
W kolejnym wydaniu (4.2) team odpowiedzialny za EF zajął się głównie poprawą znalezionych błędów przez deweloperów.

Wersja 4.3 wprowadza wiele nowości:
  • inkrementalna rozbudowa schematu bazy danych na podstawie definicji POCO
  • usunięcie tabeli EdmMetadata 
  • uwzględnienie atrybutów na polach typu private oraz protected
  • zwiększenie ilości parametrów konfiguracyjnych które można umieścić w pliku App/Web config
 Wersje EF: obecnie mamy do czynienia z czterema modelami podejścia do EF:
  • Model First
  • Database First
  • Code First (new database)
  • Code First (exist database)
Zobaczmy na bardzo przydatny diagram:


Wynika z niego iż w przypadku nowej bazy danych prawidłowymi wyborami są:
  • Model First - stworzenie modelu w narzędziu graficznym, wygenerowanie bazy na podstawie takiego diagramu
  • Code First - zdefiniowanie mapowania w kodzie, wygenerowanie bazy podczas uruchomienia bazy na podstawie stworzonego kodu
W przypadku istniejących baz danych warto wybrać podejścia:
  • Database First - stworzenie diagramu EDMX przy użyciu inżynierii wstecznej, wygenerowanie klas na podstawie stworzonego schematu
  • Code First - definicja klas i mapowania w kodzie (dostępne są też narzędzia usprawniające to zadanie)
W kolejnych postach przedstawię w jaki sposób korzystać z przedstawionych modeli.

Brak komentarzy:

Prześlij komentarz