Linq to SQL / Entity Framework / DataSet - Part 2

Linq to SQL / Entity Framework / DataSet
Skoro wiem już coś o LINQ to SQL przyszła pora na Entity Framework
Entity Framework miał ukazać się w VS2008 ale został opóźniony i udostępniony dopiero z VS2008 SP1

Słownik pojęć
1. LINQ - technologia zapytań zintegrowanych z językiem. Sam w sobie LINQ to składnia, którą można wykorzystać do odpytywania różnych źródeł danych (baza, obiekty, XML, itd.).
2. LINQ to SQL - technologia mapująca bazę danych SQL Servera do postaci obiektowej i pozwalająca na odpytywanie bazy danych za pomocą składni LINQ.
3. Entity Framework - zaawansowana technologia mapująca dowolną bazę danych do postaci obiektowej.
4. LINQ to Entities - implementacja LINQ pozwalająca na wykorzystanie składni LINQ do odpytywania źródła danych Entity Framework.

Na pierwszy rzut oka wydaje się że Entity Framework wygląda to podobnie do Linq to SQL.
Tak naprawdę jest jego starszym bratem dużo bardziej rozbudowanym i zaawansowanym.
Mamy tu np relacje many-to-many, złożone wartości, oprócz wsparcia dla LINQ ma również swój wewnętrzny język Entity SQL.
Model entity framework składa się z trzech poziomów abstrakcji.
  1. Opis bazy
  2. Plik mapowania
  3. Opis obiektów biznesowych


Takie rozwiązanie umożliwia swobodną i niezależną manipulację każdym z poziomów z osobna.
A tak to wygląda w VS
Mała wizualizacja architektury EF
Małe porównanie LINQ to SQL vs LINQ to Entities
LINQ to SQL LINQ to Entities
Wspierane bazy danych SQL Server SQL Server, DB2, Oracle, Sybase, MySQL...
(bazuje na providerach)
Możliwości mapowania obiektów Proste Złożone (np many-to-many)
Status w Microsoft Niezbyt ważny Strategiczny
Poziom wkurzenia developera Niewielki Znaczący ;)

Microsoft inwestuje w Entity Framework jako produkt strategiczny i bardzo go rozwija, pozostawiając przy tym w małym zapomnieniu Linq to SQL. Jak bardzo rozwija się EF warto zobaczyć listę nowych możliwości wydaną z VS2010 Beta1 dokumentacja Entity Framework dla Beta1
Na stronie Microsoft'a data access strategy przedstawione zostały główne punkty kiedy powinniśmy zdecydować się na używanie Entity Framework, a mianowicie jeśli potrzebujemy poniższych opcji
  1. Możliwość definiowania elastycznego mapowania do istniejącego relacyjnego schematu, np:
    1. Mapowanie pojedyńczego obiektu do wielu tabel
    2. Używanie relacji Many-to-Many
    3. Mapowanie do wybranego zapytania
  2. Możliwość użycia bazy innej niż MSSQL.
  3. Możliwość dzielenia modelu z innymi produktami Microsoft jak: Replication, Reporting Services, BI, Integration Services, ...
  4. Możliwość odpytywania modelu pojęciowego bez konieczności materializacji rezultatów jako obiekty


Temat EF jest tak rozległy że nie sposób go opisach a już na pewno nie w jednym poście.
Moje rozważania i porównania miały prowadzić do konkluzji którą metodę dostępu do danych wybrać. Ja pisze programik tylko do prezentacji, stąd użycie LinqToSql może być logicznym wyjściem.
Jednak co wybrać do nowo rozpoczynanego dużego projektu?

Komentarze

Publikowanie komentarza

Popularne posty