IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

Entity Framework Core (Jak to działa dla programistów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 23 kwietnia 2026

W dziedzinie nowoczesnego tworzenia oprogramowania kluczowe znaczenie ma efektywne zarządzanie danymi. Niezależnie od tego, czy tworzysz prostą aplikację, czy złożony system Enterprise, skuteczny dostęp do danych, ich przetwarzanie i zapisywanie to podstawowy wymóg. Entity Framework Core (EF Core) w języku C# to potężne narzędzie, które upraszcza dostęp do danych, zapewniając wygodne i zorientowane obiektowo podejście do pracy z bazami danych. W tym artykułe zagłębimy się w świat EF Core, badając jego funkcje, możliwości i najlepsze praktyki. Ponadto przyjrzymy się rozwiązaniu IronPDF firmy Iron Software Solutions, służącemu do obsługi dokumentów PDF, umożliwiającemu odczyt, zapis i zarządzanie dokumentami PDF. Stworzymy praktyczny przykład z wykorzystaniem obu pakietów.

Zrozumienie Entity Framework Core

Entity Framework Core to otwarta, lekka i rozszerzalna wersja popularnej technologii dostępu do danych Entity Framework. Zostało zaprojektowane do pracy na wielu platformach, obsługując różnych dostawców serwerów baz danych, w tym SQL Server, SQLite, MySQL, PostgreSQL, Azure Cosmos DB i inne. EF Core to nowoczesny mapper obiektowo-relacyjny, działający zgodnie z wzorcem ORM (Object-Relational Mapping), umożliwiający programistom pracę z bazami danych przy użyciu obiektów .NET, co eliminuje konieczność ręcznego pisania żmudnych zapytań SQL.

Kluczowe funkcje EF Core

  1. Modelowanie encji: EF Core umożliwia programistom definiowanie modeli danych przy użyciu obiektów POCO (Plain Old CLR Objects). Te klasy encji reprezentują tabele bazy danych, a ich właściwości odpowiadają kolumnom tabel.

  2. Obsługa LINQ: EF Core płynnie obsługuje zapytania LINQ (Language Integrated Query), umożliwiając programistom pisanie silnie typowanych zapytań do serwera SQL lub dowolnej innej bazy danych przy użyciu znanej składni C#. Dzięki temu wyszukiwanie danych jest intuicyjne i zmniejsza się prawdopodobieństwo wystąpienia błędów w czasie wykonywania. Ponadto można używać surowych instrukcji SQL wraz z zapytaniami LINQ.

  3. Migracje baz danych: Zarządzanie zmianami schematu bazy danych może stanowić wyzwanie, zwłaszcza w środowisku zespołowym. EF Core upraszcza ten proces, zapewniając możliwości migracji baz danych, co pozwala programistom na wprowadzanie stopniowych zmian w schemacie bazy danych przy użyciu migracji typu "code-first".

  4. Ładowanie leniwe i ładowanie natychmiastowe: EF Core obsługuje zarówno strategię ładowania leniwego, jak i natychmiastowego, umożliwiając programistom optymalizację wydajności poprzez ładowanie powiązanych danych na żądanie lub z wyprzedzeniem, w zależności od przypadku użycia.

  5. Zarządzanie transakcjami: Transakcje zapewniają spójność i integralność danych podczas operacji na bazie danych. EF Core pozwala programistom na wyraźną obsługę transakcji, gwarantując, że grupa operacji na bazie danych zakończy się sukcesem lub niepowodzeniem jako całość.

  6. Kontrola współbieżności: EF Core zapewnia wbudowaną obsługę zarządzania konfliktami współbieżności, umożliwiając programistom wykrywanie i rozwiązywanie konfliktów, które mogą powstać, gdy wielu użytkowników próbuje jednocześnie modyfikować te same dane.

Pierwsze kroki z EF Core

Stwórzmy prosty przykład użycia SQLite z Entity Framework Core (EF Core) w aplikacji ASP.NET Core. Oto kolejne kroki:

  1. Utwórz swoją aplikację:

    • Zacznij od utworzenia aplikacji konsolowej lub ASP.NET.
  2. Zainstaluj niezbędne pakiety:

    • Dodaj do swojego projektu następujące pakiety NuGet:

      • Microsoft.EntityFrameworkCore (wersja 1.0.0 lub nowsza)
      • Microsoft.EntityFrameworkCore.Sqlite (wersja 1.0.0 lub nowsza)
  3. Stwórz kontekst bazy danych:

    • Zdefiniuj klase dla swojego kontekstu bazy danych (np. DatabaseContext), ktora dziedziczy z DbContext.

    • W metodzie OnConfiguring ustaw SQLite connection string:

      public class DatabaseContext : DbContext
      {
          protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
          {
              optionsBuilder.UseSqlite("Filename=sample.db");
          }
      }
      C#
  4. Zarejestruj kontekst:

    • W swojej klasie Startup dodaj swoj kontekst do uslug:

      public void ConfigureServices(IServiceCollection services)
      {
          services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>();
      }
      C#
  5. Utwórz bazę danych podczas uruchamiania:

    • W konstruktorze Startup stworz swoja baze danych:

      public Startup(IHostingEnvironment env)
      {
          using (var client = new DatabaseContext())
          {
              client.Database.EnsureCreated();
          }
      }
      C#
  6. Wykorzystaj SQLite w swojej aplikacji:

    • Teraz możesz używać SQLite w swojej aplikacji ASP.NET Core za pośrednictwem EF Core.
    • Zdefiniuj swoje modele i uzyj DatabaseContext do interakcji z baza danych.

Należy pamiętać, że jest to podstawowy przykład i istnieją inne sposoby konfiguracji ciągu połączenia oraz korzystania z EF Core. Zapraszamy do zapoznania się z bardziej zaawansowanymi funkcjami i dostosowania ich do konkretnych potrzeb!

Najlepsze praktyki dotyczące programowania w EF Core

  1. Ogranicz zakres DbContext: Instancje DbContext w EF Core są zaprojektowane tak, aby miały krótki czas życia i zazwyczaj powinny być ograniczone do czasu trwania pojedynczego żądania w aplikacjach internetowych.

  2. Uzyj AsNoTracking do operacji tylko do odczytu: Podczas wykonywania operacji tylko do odczytu, w ktorych oczekuje sie, ze encje nie beda modyfikowane, uzyj metody AsNoTracking, aby zwiekszyc wydajnosc poprzez pominiecie sledzenia zmian.

  3. Optymalizacja zapytań: Twórz wydajne zapytania, stosując odpowiednie techniki indeksowania, paginacji i filtrowania, aby zminimalizować ilość danych pobieranych z bazy danych.

  4. Unikaj problemów związanych z zapytaniami N+1: Pamiętaj o problemie zapytań N+1, w którym zapytanie jest wykonywane dla każdego powiązanego elementu w zbiorze. Użyj ładowania z wyprzedzeniem (eager loading) lub ładowania jawnego (explicit loading), aby efektywnie pobierać powiązane dane.

  5. Monitorowanie wydajności: Monitoruj wydajność EF Core za pomocą narzędzi takich jak Entity Framework Profiler lub wbudowanych funkcji logowania, aby zidentyfikować i wyeliminować wąskie gardła wydajności.

Wprowadzenie do IronPDF

Entity Framework Core (Jak to dziala dla programistow): Rysunek 1 - IronPDF

IronPDF to potężna biblioteka C# do obsługi plików PDF, która pozwala generować, edytować i wyodrębniać treści z dokumentów PDF w projektach .NET. Oto kilka kluczowych funkcji:

  1. Konwersja HTML do PDF:

    • Konwersja treści HTML, CSS i JavaScript do formatu PDF.
    • Użyj silnika renderującego Chrome, aby uzyskać pliki PDF o idealnej rozdzielczości.
    • Generuj pliki PDF z adresów URL, plików HTML lub ciągów znaków HTML.
  2. Konwersja obrazów i treści:

    • Konwertuj obrazy do i z formatu PDF.
    • Wyodrębnianie tekstu i obrazów z istniejących plików PDF.
    • Obsługa różnych formatów obrazów.
  3. Edycja i obróbka:

    • Ustawianie właściwości, zabezpieczeń i uprawnień dla plików PDF.
    • Dodaj podpisy cyfrowe.
    • Edytuj metadane i historię zmian.
  4. Obsługa wielu platform:

    • Działa z .NET Core (8, 7, 6, 5 i 3.1+), .NET Standard (2.0+) oraz .NET Framework (4.6.2+).
    • Kompatybilny z systemami Windows, Linux i macOS.
    • Dostępne w serwisie NuGet, co ułatwia instalację.

Generowanie dokumentu PDF przy użyciu IronPDF wraz z EF Core

Na początek utwórz aplikację konsolową za pomocą programu Visual Studio, jak pokazano poniżej.

Entity Framework Core (Jak to dziala dla programistow): Rysunek 2 - Nowy projekt

Podaj nazwę projektu.

Entity Framework Core (Jak to dziala dla programistow): Rysunek 3 - Konfiguracja projektu

Zapewnij wersję .NET na różne platformy.

Entity Framework Core (Jak to dziala dla programistow): Rysunek 4 - Framework

Zainstaluj pakiet Microsoft.EntityFrameworkCore.

Entity Framework Core (Jak to dziala dla programistow): Rysunek 5 - Pakiet Microsoft.EntityFrameworkCore

Zainstaluj pakiet Microsoft.EntityFrameworkCore.SqlLite.

Entity Framework Core (Jak to dziala dla programistow): Rysunek 6 - Pakiet Microsoft.EntityFrameworkCore.SqlLite

Zainstaluj pakiet IronPDF.

Entity Framework Core (Jak to dziala dla programistow): Rysunek 7 - IronPDF

Dodaj ponizszy kod do Program.cs.

using IronPdf;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;

namespace CodeSample
{
    public class Program
    {
        public static void Main()
        {
            Console.WriteLine("-------------Demo EF core and IronPDF--------------");
            
            // Disable local disk access or cross-origin requests
            Installation.EnableWebSecurity = true;
            
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            
            // Start with initial HTML content
            var content = "<h1>Demo EF core and IronPDF</h1>";
            content += "<h2>Add Students</h2>";
            
            // Add Students to Database
            using (var client = new DatabaseContext())
            {
                client.Database.EnsureCreated(); // Create table if it doesn't exist
                client.Students.ExecuteDelete(); // Ensure the table is clean

                // Define students
                var students = new[]
                {
                    new Student { StudentName = "Bill", DateOfBirth = new DateTime(1990, 12, 01), Height = 5.45M, Weight = 56, Grade = 10 },
                    new Student { StudentName = "Mike", DateOfBirth = new DateTime(1992, 12, 06), Height = 4.45M, Weight = 34, Grade = 8 },
                    new Student { StudentName = "Peter", DateOfBirth = new DateTime(1990, 12, 03), Height = 5.0M, Weight = 50, Grade = 10 },
                    new Student { StudentName = "Bob", DateOfBirth = new DateTime(1990, 12, 09), Height = 4.56M, Weight = 56, Grade = 10 },
                    new Student { StudentName = "Harry", DateOfBirth = new DateTime(1990, 12, 21), Height = 5.6M, Weight = 56, Grade = 10 },
                    new Student { StudentName = "Charle", DateOfBirth = new DateTime(1993, 12, 11), Height = 5.5M, Weight = 56, Grade = 7 }
                };

                // Add students to database
                client.Students.AddRange(students);
                client.SaveChanges();

                // Add students info to HTML content
                foreach (var student in students)
                {
                    content = AddStudent(content, student);
                }
            }

            content += "<h2>Display Students in Database</h2>";
            
            // Display Students in Database
            using (var client = new DatabaseContext())
            {
                Console.WriteLine($"Displaying Students in Database:");
                var students = client.Students.ToList();
                
                foreach (var student in students)
                {
                    Console.WriteLine($"Name= {student.StudentName}, ID={student.StudentID}, Grade={student.Grade}, Weight={student.Weight}, Height={student.Height}");
                    content = AddStudent(content, student);
                }
            }           
            
            // Render HTML content to PDF
            var pdf = renderer.RenderHtmlAsPdf(content);
            
            // Export to a file or stream
            pdf.SaveAs("AwesomeEfCoreAndIronPdf.pdf");
        }

        // Helper method to add student info as HTML content
        private static string AddStudent(string content, Student student)
        {
            content += $"<p Name = {student.StudentName}, ID={student.StudentID}, Grade={student.Grade}, Weight={student.Weight}, Height={student.Height}</p>";
            return content;
        }
    }
    
    public class DatabaseContext : DbContext
    {
        public DbSet<Student> Students { get; set; }
        
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite("Filename=IronPdfDemo.db");
        }        
    }
    
    public class Student
    {
        public int StudentID { get; set; }
        public string StudentName { get; set; }
        public DateTime? DateOfBirth { get; set; }
        public decimal Height { get; set; }
        public float Weight { get; set; }
        public int Grade { get; set; }
    }
}
C#

Wyjaśnienie kodu

  1. Konfigurowanie Renderera i treści:

    • Kod rozpoczyna sie od utworzenia ciagu HTML z naglowkiem (<h1>) i podnaglowkiem (<h2>) do dodania studentow do bazy danych.
    • Celem jest wygenerowanie dokumentu PDF przy użyciu IronPDF, który będzie zawierał informacje o studentach.
  2. Kontekst bazy danych i dodawanie studentów:

    • Klasa DatabaseContext jest uzywana do interakcji z baza danych.
    • client.Database.EnsureCreated(); zapewnia, ze baza danych i tabela istnieja.
    • client.Students.ExecuteDelete(); usuwa wszelkie istniejace dane z tabeli Students.
    • Studenci są definiowani i dodawani do bazy danych. Wlasciwosci zawieraja StudentName, DateOfBirth, Height, Weight oraz Grade.
    • client.SaveChanges(); zapisuje zmiany w bazie danych.
  3. Wyświetlanie studentów:

    • Kod pobiera wszystkich studentow za pomoca client.Students.ToList();.
    • Dla każdego ucznia drukuje jego imię i nazwisko, numer identyfikacyjny, ocenę, wagę i wzrost, a następnie dodaje te informacje do treści HTML.
  4. Generowanie do PDF:

    • ChromePdfRenderer jest instancjonowana.
    • Zawartosc HTML jest renderowana do PDF za pomoca renderer.RenderHtmlAsPdf(content).
    • Na koniec plik PDF jest zapisywany jako "AwesomeEfCoreAndIronPdf.pdf".

Wynik

Entity Framework Core (Jak to dziala dla programistow): Rysunek 8 - Wyjscie konsoli

PDF

Entity Framework Core (Jak to dziala dla programistow): Rysunek 9 - Wyjscie PDF

Licencjonowanie IronPDF

Pakiet IronPDF wymaga licencji do uruchomienia i generowania plików PDF. Dodaj poniższy kod na początku aplikacji, zanim nastąpi dostęp do pakietu.

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";

Licencja Trial jest dostępna na stronie licencyjnej IronPDF.

Wnioski

Entity Framework Core w języku C# zapewnia solidny i intuicyjny sposób interakcji z bazami danych, oferując gotowe do użycia funkcje, takie jak obsługa LINQ, migracje baz danych i zarządzanie transakcjami. Stosując się do najlepszych praktyk i wykorzystując jego potężne możliwości, programiści mogą z łatwością tworzyć skalowalne i łatwe w utrzymaniu aplikacje. Niezależnie od tego, czy jesteś doświadczonym programistą, czy dopiero zaczynasz, EF Core jest cennym narzędziem, które warto mieć w swoim zestawie narzędzi do nowoczesnego dostępu do danych w aplikacjach C#. Z drugiej strony, IronPDF to biblioteka .NET służąca do tworzenia, edycji i renderowania dokumentów PDF w ramach aplikacji. Można go używać razem z EF Core do konwersji treści HTML (w tym obrazów) do pliku PDF.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta