Udostępnij za pośrednictwem


Omówienie programu Entity Framework

Program Entity Framework to zestaw technologii w ADO.NET, które obsługują tworzenie aplikacji programowych zorientowanych na dane. Architekci i deweloperzy aplikacji zorientowanych na dane zmagali się z koniecznością osiągnięcia dwóch bardzo różnych celów. Muszą modelować jednostki, relacje i logikę rozwiązywanych problemów biznesowych, a także muszą współpracować z aparatami danych używanymi do przechowywania i pobierania danych. Dane mogą obejmować wiele systemów magazynowania, z których każdy ma własne protokoły; nawet aplikacje, które współpracują z jednym systemem magazynu, muszą równoważyć wymagania systemu magazynowania przed wymaganiami pisania wydajnego i konserwowalnego kodu aplikacji.

Platforma Entity Framework umożliwia deweloperom pracę z danymi w postaci obiektów i właściwości specyficznych dla domeny, takich jak klienci i adresy klientów, bez konieczności troski o bazowe tabele i kolumny bazy danych, w których są przechowywane te dane. Dzięki platformie Entity Framework deweloperzy mogą pracować na wyższym poziomie abstrakcji, gdy zajmują się danymi, i mogą tworzyć i obsługiwać aplikacje zorientowane na dane z mniejszym kodem niż w tradycyjnych aplikacjach. Ponieważ program Entity Framework jest składnikiem programu .NET Framework, aplikacje programu Entity Framework mogą być uruchamiane na dowolnym komputerze, na którym jest zainstalowany program .NET Framework, począwszy od wersji 3.5 z dodatkiem SP1.

Nadaj życie modelom

Długotrwałe i typowe podejście projektowe podczas tworzenia aplikacji lub usługi jest podziałem aplikacji lub usługi na trzy części: model domeny, model logiczny i model fizyczny. Model domeny definiuje jednostki i relacje w systemie, który jest modelowany. Model logiczny dla relacyjnej bazy danych normalizuje jednostki i relacje w tabelach z ograniczeniami klucza obcego. Model fizyczny zajmuje się możliwościami określonego aparatu danych, określając szczegóły magazynu, takie jak partycjonowanie i indeksowanie.

Model fizyczny jest udoskonalony przez administratorów bazy danych w celu zwiększenia wydajności, ale programiści pisząc kod aplikacji przede wszystkim ograniczają się do pracy z modelem logicznym przez pisanie zapytań SQL i wywoływanie procedur składowanych. Modele domen są zwykle używane jako narzędzie do przechwytywania i komunikowania wymagań aplikacji, często jako diagramów inertnych, które są wyświetlane i omawiane we wczesnych etapach projektu, a następnie porzucone. Wiele zespołów programistycznych pomija tworzenie modelu koncepcyjnego i rozpoczyna się od określenia tabel, kolumn i kluczy w relacyjnej bazie danych.

Program Entity Framework daje życie modelom, umożliwiając deweloperom wykonywanie zapytań o jednostki i relacje w modelu domeny (nazywanym modelem koncepcyjnym w programie Entity Framework), korzystając z programu Entity Framework, aby przetłumaczyć te operacje na polecenia specyficzne dla źródła danych. Zwalnia to aplikacje z zakodowanych na sztywno zależności od określonego źródła danych.

Podczas pracy z programem Code First model koncepcyjny jest mapowany na model magazynu w kodzie. Program Entity Framework może wywnioskować model koncepcyjny na podstawie zdefiniowanych typów obiektów i dodatkowych konfiguracji. Metadane mapowania są generowane w czasie wykonywania na podstawie kombinacji sposobu definiowania typów domeny i dodatkowych informacji o konfiguracji podanych w kodzie. Program Entity Framework generuje bazę danych zgodnie z potrzebami na podstawie metadanych. Aby uzyskać więcej informacji, zobacz Tworzenie modelu.

Podczas pracy z narzędziami Entity Data Model Tools model koncepcyjny, model magazynu i mapowania między nimi są wyrażane w schematach opartych na formacie XML i zdefiniowane w plikach, które mają odpowiednie rozszerzenia nazw:

  • Język definicji schematu koncepcyjnego (CSDL) definiuje model koncepcyjny. CSDL to implementacja modelu danych jednostek platformy Entity Framework. Rozszerzenie pliku to .csdl.

  • Język definicji schematu magazynu (SSDL) definiuje model magazynu, który jest również nazywany modelem logicznym. Rozszerzenie pliku to .ssdl.

  • Język specyfikacji mapowania (MSL) definiuje mapowania między magazynem a modelami koncepcyjnymi. Rozszerzenie pliku to msl.

Model magazynu i mapowania mogą zmieniać się w razie potrzeby bez konieczności wprowadzania zmian w modelu koncepcyjnym, klasach danych lub kodzie aplikacji. Ponieważ modele magazynu są specyficzne dla dostawcy, można pracować z spójnym modelem koncepcyjnym w różnych źródłach danych.

Program Entity Framework używa tych plików modelu i mapowania do tworzenia, odczytywania, aktualizowania i usuwania operacji względem jednostek i relacji w modelu koncepcyjnym do równoważnych operacji w źródle danych. Platforma Entity Framework obsługuje nawet mapowanie jednostek w modelu koncepcyjnym na procedury składowane w źródle danych. Aby uzyskać więcej informacji, zobacz SPECYFIKACJe CSDL, SSDL i MSL.

Mapuj obiekty na dane

Programowanie obiektowe stanowi wyzwanie dla interakcji z systemami magazynowania danych. Chociaż organizacja klas często odzwierciedla organizację tabel relacyjnych baz danych, dopasowanie nie jest idealne. Wiele znormalizowanych tabel często odpowiada jednej klasie, a relacje między klasami są często reprezentowane inaczej niż relacje między tabelami. Na przykład aby reprezentować klienta dla zamówienia sprzedaży, Order klasa może użyć właściwości zawierającej odwołanie do wystąpienia Customer klasy, podczas gdy Order wiersz tabeli w bazie danych zawiera kolumnę klucza obcego (lub zestaw kolumn) z wartością odpowiadającą wartości klucza podstawowego w Customer tabeli. Klasa Customer może mieć właściwość o nazwie Orders , która zawiera kolekcję wystąpień Order klasy, podczas gdy Customer tabela w bazie danych nie ma porównywalnej kolumny. Platforma Entity Framework zapewnia deweloperom elastyczność reprezentowania relacji w ten sposób lub ściślejszych relacji modelu, które są reprezentowane w bazie danych.

Istniejące rozwiązania próbowały wypełnić tę lukę, która jest często nazywana "niezgodnością impedancji", mapując tylko klasy zorientowane obiektowo i właściwości na tabele i kolumny relacyjne. Zamiast korzystać z tego tradycyjnego podejścia, struktura Entity Framework mapuje tabele relacyjne, kolumny i ograniczenia klucza obcego w modelach logicznych na jednostki i relacje w modelach koncepcyjnych. Zapewnia to większą elastyczność zarówno podczas definiowania obiektów, jak i optymalizowania modelu logicznego. Narzędzia modelu danych jednostki generują rozszerzalne klasy danych na podstawie modelu koncepcyjnego. Te klasy są klasami częściowymi, które można rozszerzyć z dodatkowymi elementami członkowskimi dodanymi przez dewelopera. Domyślnie klasy generowane dla określonego modelu koncepcyjnego pochodzą z klas bazowych, które zapewniają usługi materializowania jednostek jako obiektów oraz śledzenia i zapisywania zmian. Deweloperzy mogą używać tych klas do pracy z jednostkami i relacjami jako obiektami powiązanymi przez skojarzenia. Deweloperzy mogą również dostosowywać klasy generowane dla modelu koncepcyjnego. Aby uzyskać więcej informacji, zobacz Praca z obiektami.

Uzyskiwanie dostępu do danych jednostki i zmienianie ich

Więcej niż tylko inne rozwiązanie mapowania relacyjnego obiektów, platforma Entity Framework zasadniczo polega na umożliwieniu aplikacjom uzyskiwania dostępu do danych i zmieniania ich reprezentowanych jako jednostki i relacje w modelu koncepcyjnym. Program Entity Framework używa informacji w modelu i plikach mapowania do tłumaczenia zapytań dotyczących obiektów na typy jednostek reprezentowane w modelu koncepcyjnym na zapytania specyficzne dla źródła danych. Wyniki zapytań są zmaterializowane w obiektach zarządzanych przez program Entity Framework. Program Entity Framework udostępnia następujące sposoby wykonywania zapytań względem modelu koncepcyjnego i zwracania obiektów:

  • LINQ to Entities. Zapewnia obsługę zapytań zintegrowanych z językiem (LINQ) na potrzeby wykonywania zapytań dotyczących typów jednostek zdefiniowanych w modelu koncepcyjnym. Aby uzyskać więcej informacji, zobacz LINQ to Entities (LinQ to Entities).

  • Jednostka SQL. Niezależny od magazynu dialekt JĘZYKA SQL, który współpracuje bezpośrednio z jednostkami w modelu koncepcyjnym i obsługuje koncepcje modelu danych jednostek. Język Entity SQL jest używany zarówno z zapytaniami obiektów, jak i zapytaniami wykonywanymi przy użyciu dostawcy EntityClient. Aby uzyskać więcej informacji, zobacz Entity SQL Overview (Omówienie jednostki SQL).

Platforma Entity Framework zawiera dostawcę danych EntityClient. Ten dostawca zarządza połączeniami, tłumaczy zapytania jednostek na zapytania specyficzne dla źródła danych i zwraca czytnik danych używany przez program Entity Framework do materializowania danych do obiektów. Jeśli materializacja obiektów nie jest wymagana, dostawca EntityClient może być również używany jako standardowy dostawca danych ADO.NET, umożliwiając aplikacjom wykonywanie zapytań Entity SQL i korzystanie z zwróconego czytnika danych tylko do odczytu. Aby uzyskać więcej informacji, zobacz EntityClient Provider for the Entity Framework (Dostawca EntityClient dla programu Entity Framework).

Na poniższym diagramie przedstawiono architekturę programu Entity Framework na potrzeby uzyskiwania dostępu do danych:

Entity Framework Architectural Diagram

Narzędzia entity Data Model Tools mogą wygenerować klasę pochodzącą z System.Data.Objects.ObjectContext lub System.Data.Entity.DbContext reprezentującą kontener jednostek w modelu koncepcyjnym. Ten kontekst obiektu udostępnia obiekty do śledzenia zmian i zarządzania tożsamościami, współbieżnością i relacjami. Ta klasa udostępnia również metodę SaveChanges zapisującą wstawki, aktualizacje i usuwanie do źródła danych. Podobnie jak zapytania, te zmiany są wprowadzane przez polecenia generowane automatycznie przez system lub przez procedury składowane określone przez dewelopera.

Dostawcy danych

Dostawca EntityClient rozszerza model dostawcy ADO.NET przez uzyskiwanie dostępu do danych w zakresie jednostek koncepcyjnych i relacji. Wykonuje zapytania korzystające z jednostki SQL. Jednostka SQL udostępnia podstawowy język zapytań, który umożliwia komunikowanie EntityClient się z bazą danych. Aby uzyskać więcej informacji, zobacz EntityClient Provider for the Entity Framework (Dostawca EntityClient dla programu Entity Framework).

Program Entity Framework zawiera zaktualizowaną Dostawca danych SqlClient, która obsługuje drzewa poleceń kanonicznych. Aby uzyskać więcej informacji, zobacz SqlClient dla programu Entity Framework.

Narzędzia modelu danych jednostki

Wraz ze środowiskiem uruchomieniowym platformy Entity Framework program Visual Studio zawiera narzędzia do mapowania i modelowania. Aby uzyskać więcej informacji, zobacz Modelowanie i mapowanie.

Dowiedz się więcej

Aby dowiedzieć się więcej o programie Entity Framework, zobacz:

Wprowadzenie — zawiera informacje o tym, jak szybko rozpocząć pracę, korzystając z przewodnika Szybki start, który pokazuje, jak utworzyć prostą aplikację platformy Entity Framework.

Terminologia platformy Entity Framework — definiuje wiele terminów, które są wprowadzane przez model danych jednostki i platformę Entity Framework oraz które są używane w dokumentacji programu Entity Framework.

Zasoby platformy Entity Framework — zawiera linki do tematów koncepcyjnych i linki do zewnętrznych tematów i zasobów na potrzeby tworzenia aplikacji platformy Entity Framework.

Zobacz też