Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zgodnie z opisem w procesie planowania zebraliśmy dane wejściowe od uczestników projektu w ramach planu dla platformy Entity Framework Core 8 (EF Core 8) i innych działań programu .NET Data Access dla platformy .NET 8. W celu zwięzłości program EF Core 8 jest również określany jako tylko EF8.
Ważne
Ten plan nie jest zobowiązaniem; będzie ona ewoluować w miarę dalszego uczenia się w całej wersji. Niektóre elementy, które nie są obecnie planowane dla ef8, mogą zostać wciągnięte. Niektóre rzeczy obecnie planowane dla EF8 mogą zostać uderzone.
Informacje ogólne
Ef Core 8 to kolejna wersja po programie EF Core 7 i zaplanowana na wydanie w listopadzie 2023 r. w tym samym czasie co platforma .NET 8. Nie ma planów dla wersji EF Core 7.1.
Obsługiwane platformy
Obecnie platforma EF8 jest przeznaczona dla platformy .NET 6. Prawdopodobnie zostanie to zaktualizowane do platformy .NET 8, gdy zbliżamy się do wersji. Program EF8 nie jest przeznaczony dla żadnej wersji platformy .NET Standard; Aby uzyskać więcej informacji, zobacz przyszłość platformy .NET Standard. Program EF8 nie zostanie uruchomiony w programie .NET Framework.
Platforma EF8 będzie zgodna z platformą .NET 8 jako długoterminową wersją pomocy technicznej (LTS). Aby uzyskać więcej informacji, zobacz zasady pomocy technicznej platformy .NET.
Zmiany powodujące niezgodność
Program EF8 będzie zawierać niewielką liczbę zmian powodujących niezgodność, ponieważ nadal ewoluujemy zarówno platformę EF Core, jak i platformę .NET. Naszym celem jest zminimalizowanie jak największej liczby zmian powodujących niezgodność bez stagnatingu platformy.
Motywy
Duże inwestycje w program EF8 i dostęp do danych na platformie .NET 8 są objęte następującymi tematami:
- Funkcje o wysokim żądaniu
- Natywne dla chmury i urządzenia
- Wydajność
- Narzędzia wizualne
- Środowisko dewelopera
Każdy z tych motywów został szczegółowo opisany poniżej. Ogólny stan każdego motywu można śledzić w Aktualizacje danych platformy .NET. Dodaj komentarz do problemu usługi GitHub #26994 z wszelkimi opiniami lub sugestiami.
Temat: Funkcje o wysokim żądaniu
Jak zawsze głównymi danymi wejściowymi w procesie planowania są głosy (👍) dotyczące funkcji w usłudze GitHub. Na podstawie tych głosów i danych wejściowych użytkownika planujemy pracować nad następującymi wysoce żądanymi funkcjami dla platformy EF8.
Kolumny JSON
Śledzone przez problemy oznaczone etykietą "area-json" i "consider-for-current-release"
Propozycja wartości: utwórz obsługę formatu EF7 JSON, aby zwiększyć możliwości wzorca hybrydowego dokumentu/relacyjnego.
Program EF7 wprowadził mapowanie kolumn JSON programu SQL Server na typy agregacji w modelu EF, ale z pewnymi ograniczeniami. W programie EF8 planujemy rozwiązać wiele z tych ograniczeń, a także przetestować i poprawić wydajność. W programie EF7 mapowanie JSON na agregacje jest ograniczone do programu SQL Server. W programie EF8 planujemy zapewnić obsługę sqlite i współpracować z właścicielami innych dostawców w celu dostosowania obsługi kolumn JSON we wszystkich dostawcach.
Obiekty wartości
Śledzone przez problem nr 9906: Użyj struktur lub klas języka C# jako obiektów wartości
Propozycja wartości: Aplikacje mogą używać obiektów wartości typu DDD w modelach EF.
Wcześniej był to widok zespołu, który posiadał jednostki przeznaczone do obsługi agregacji, byłby również rozsądnym przybliżeniem obiektów wartości. Doświadczenie pokazało, że tak nie jest. W związku z tym w programie EF8 planujemy wprowadzić lepsze środowisko skoncentrowane na potrzebach obiektów wartości w projekcie opartym na domenie. Takie podejście będzie oparte na konwerterach wartości, a nie na jednostkach należących.
Zapytania SQL dotyczące niemapowanych typów
Śledzone przez problem nr 10753: Obsługa nieprzetworzonych zapytań SQL bez definiowania typu jednostki dla wyniku
Propozycja wartości: aplikacje mogą wykonywać więcej typów zapytań SQL bez konieczności przechodzenia do ADO.NET lub używania bibliotek innych firm.
Obecnie zapytania SQL muszą zwracać typ w modelu lub typ skalarny. W programie EF8 planujemy zezwolić na zapytania SQL, które bezpośrednio zwracają typy, które nie są zawarte w modelu EF.
Temat: Chmura natywna i urządzenia
Program EF Core jest najczęściej używany w tradycyjnych aplikacjach internetowych platformy ASP.NET Core. Jednak platforma EF Core jest coraz częściej używana w mikrousługach i na urządzeniach przenośnych. Te środowiska zwykle preferują mniejszy rozmiar aplikacji, krótszy czas uruchamiania i nie polegają na dynamicznym generowaniu kodu. Znacznie ulepszyliśmy przycinanie aplikacji EF Core w programie EF7 i planujemy dalsze inwestycje w tych obszarach dla ef8.
AOT i przycinanie za pomocą platformy EF Core
Śledzone przez problemy oznaczone etykietą "area-aot" i "consider-for-current-release"
Propozycja wartości: Małe, szybkie uruchamianie aplikacji EF Core bez dynamicznego generowania kodu.
Program EF Core ma kilka cech, które są wyzwaniem dla przycinanych, skompilowanych aplikacji przed czasem (AOT):
- Korzystanie z imperatywnego kodu i odbicia aplikacji w celu odnalezienia modelu i mapowań ef
- Używanie odbicia i dynamicznie generowanych typów zapytań i śledzenia zmian
- Dynamicznie generowany kod dla imperatywnie skonstruowanych dowolnych zapytań LINQ
W programie EF8 planujemy zbadać i utworzyć prototyp tych obszarów, aby znaleźć drogę do przodu dla usługi AOT i przycinanie, które zachowuje bieżące środowisko użytkownika platformy EF Core.
AOT i przycinanie dla ADO.NET
Propozycja wartości: Dostęp do danych niskiego poziomu może być używany w aplikacjach natywnych dla chmury.
Technologie dostępu do danych wyższego poziomu, takie jak EF Core, korzystają z dostawców danych ADO.NET, takich jak Microsoft.Data.SqlClient, Microsoft.Data.Sqlite i Npgsql. W przypadku platformy .NET 8 upewnimy się, że dostawca npgsql dla postgreSQL i dostawcy Microsoft.Data.Sqlite dla biblioteki SQLite działają w aplikacjach przycinanych i skompilowanych przy użyciu protokołu AOT. Będziemy również współpracować z autorami innych dostawców danych ADO.NET, aby ułatwić im aot i przycinanie.
Temat: Wydajność
Doskonała wydajność jest podstawą dla wszystkich platform .NET, w tym zarówno programu EF Core, jak i dostępu do danych niższego poziomu. Woodstar (patrz poniżej) będzie naszym podstawowym wypchnięciem wydajności w przedziale czasowym platformy .NET 8. Jednak planujemy również pracować nad wydajnością w niektórych innych obszarach, takich jak w kolumnach JSON, zgodnie z powyższym opisem. Ponadto prace nad AOT i przycinaniem (patrz powyżej) mają silną relację z wydajnością.
Gwiazda drewna
Śledzone w repozytorium .NET Data Lab
Propozycja wartości: Szybki, w pełni zarządzany dostęp do programu SQL Server i usługi Azure SQL dla aplikacji platformy .NET.
Microsoft.Data.SqlClient to w pełni funkcjonalny dostawca bazy danych ADO.NET dla programu SQL Server. Obsługuje ona szeroką gamę funkcji programu SQL Server zarówno na platformie .NET, jak i w programie .NET Framework. Jednak jest to również duża i stara baza kodu z wieloma złożonymi interakcjami między jego zachowaniami. Utrudnia to korzystanie z nowszych funkcji wydajności platformy .NET, takich jak Pipelines. Ma również kilka problemów z wydajnością (zwłaszcza w przypadku odczytywania dużych danych), które okazały się bardzo trudne do rozwiązania.
Planujemy zainwestować bardziej mocno na Woodstar w ramce czasowej platformy .NET 8. Naszym wstępnym celem jest uruchomienie testu porównawczego TechEmpower Fortunes przy użyciu Woodstar do końca wydania.
Ważne
Inwestycja w microsoft.Data.SqlClient nie ulega zmianie. Będzie to nadal zalecany sposób nawiązywania połączenia z programem SQL Server i usługą Azure SQL, zarówno z programem EF Core, jak i bez niego. W miarę ich wprowadzania będzie nadal obsługiwać nowe funkcje programu SQL Server.
Motyw: Narzędzia wizualne
Program EF Core oferuje zaawansowane, wieloplatformowe narzędzia wiersza polecenia na potrzeby migracji baz danych, inżynierii odwrotnej i nie tylko. Ponadto narzędzia EF Core Power Tools oferują wizualne środowisko dla niektórych z tych elementów. Jednak program EF Core jest praktycznie nieobecny w domyślnym środowisku interfejsu użytkownika programu Visual Studio. W przedziale czasowym platformy .NET 8 planujemy utworzenie narzędzi platformy EF Core wbudowanych części środowiska programu Visual Studio.
Szablony T4 pierwszej klasy w programie Visual Studio
Propozycja wartości: Wykorzystanie tworzenia szablonów T4 w wielu obszarach w programie Visual Studio.
Program EF7 wprowadził szablony T4 do tworzenia szkieletów (inżynierii odwrotnej) modelu EF z istniejącej bazy danych. Jednak edytowanie szablonów T4 może być trudne bez dobrego środowiska edytora. W przedziale czasowym platformy .NET 8 planujemy wprowadzenie lepszego środowiska edycji T4 do programu Visual Studio, aby można było go używać zarówno dla programu EF, jak i innych szablonów.
Ef Core Database First w programie Visual Studio
Propozycja wartości: gotowe do użycia narzędzia Database First w programie Visual Studio.
Narzędzia EF Core Power Tools oferują doskonałe środowisko wizualne dla narzędzi EF Core. Jednak narzędzia Power Tools nie są instalowane w wersji gotowej do użycia w programie Visual Studio i nie mogą być trudne do odnalezienia. W przedziale czasowym platformy .NET 8 planujemy łatwe odnajdywanie narzędzi EF Core w programie Visual Studio. Głównym celem tej pracy będzie tworzenie szkieletów (inżynieria odwrotna) modelu EF z istniejącej bazy danych, inaczej nazywanej "Database First", ale może również obejmować inne obszary.
Temat: Środowisko dewelopera
Tworzenie doskonałego środowiska dla deweloperów zawsze było główną siłą napędową zespołu. Prawie wszystko w motywach opisanych powyżej odnosi się do tego w jakiś sposób. Ponadto duża część prac zaplanowanych na program EF8 obejmuje poprawę środowiska dewelopera na wiele małych sposobów w wielu obszarach.
Wszystkie problemy, nad którymi możemy potencjalnie pracować dla platformy EF8, są śledzone w witrynie GitHub przez etykietę "consider-for-current-release". Ponownie ocenimy te problemy w całej wersji i przeniesiemy problemy do kamienia milowego w wersji 8.0, ponieważ zobowiązujemy się do ich pracy. Pamiętaj, aby głosować na problemy, które są dla Ciebie ważne (👍), abyśmy mogli używać tych informacji podczas podejmowania decyzji, nad którymi problemami należy pracować.
Problemy z usługą GitHub platformy EF Core są przypisywane do co najmniej jednego "obszaru". Poniższe zapytania filtrują problemy, które rozważamy w przypadku platformy EF8 według głównych obszarów:
- Zapytania
- Kompilowanie i metadane modelu
- Śledzenie zmian
- Wydajność
- Migracje
- DbContext i powiązane interfejsy API
- Narzędzi
- Dostawca usługi Azure Cosmos
- Konwencje tworzenia modeli
- Mapowanie specyficzne dla relacyjnego
- Dostawca programu SQL Server
- Savechanges
- Mapowanie modelu na bazę danych
- Dostawca SQLite
- Tworzenie szkieletów (inżynieria odwrotna)
- Rejestrowanie
- Dynamiczne serwery proxy
- Mapowanie typów
- dostawca ADO.NET SQLite
- Tabele danych czasowych
Sugestie
Twoja opinia na temat planowania jest ważna. Skomentuj problem w witrynie GitHub #29853 z wszelkimi opiniami lub ogólnymi sugestiami dotyczącymi planu. Najlepszym sposobem wskazania znaczenia problemu jest głosowanie (👍) w sprawie tego problemu w usłudze GitHub. Te dane zostaną następnie wprowadzone do procesu planowania na potrzeby następnej wersji.