Zum Fußzeileninhalt springen
.NET HILFE

Entity Framework Core (Wie es für Entwickler funktioniert)

Im Bereich der modernen Softwareentwicklung ist effizientes Datenmanagement entscheidend. Egal, ob Sie eine einfache Anwendung oder ein komplexes Unternehmenssystem entwickeln, der effektive Zugriff, die Manipulation und das Speichern von Daten sind grundlegende Anforderungen. Entity Framework Core (EF Core) in C# ist ein leistungsstarkes Werkzeug, das den Datenzugriff vereinfacht, indem es einen bequemen und objektorientierten Ansatz für die Arbeit mit Datenbanken bietet. In diesem Artikel tauchen wir in die Welt von EF Core ein, erforschen seine Merkmale, Fähigkeiten und Best Practices. Außerdem werfen wir einen Blick auf IronPDF für den Umgang mit PDF-Dokumenten von Iron Software Solutions, um PDF-Dokumente zu lesen, zu schreiben und zu verwalten. Wir werden ein praktisches Beispiel mit beiden Paketen erstellen.

Verstehen von Entity Framework Core

Entity Framework Core ist eine Open-Source-, leichte und erweiterbare Version der beliebten Entity Framework-Datenzugriffstechnologie. Es ist plattformübergreifend ausgelegt und unterstützt verschiedene bestehende Datenbankserveranbieter, einschließlich SQL Server, SQLite, MySQL, PostgreSQL, Azure Cosmos DB und mehr. EF Core ist ein moderner objektrelationaler Mapper und folgt dem ORM-Muster (Objekt-Relationales Mapping), welches es Entwicklern ermöglicht, mit Datenbanken zu arbeiten, indem .NET-Objekte verwendet werden, was das Schreiben umständlicher SQL-Abfragen manuell überflüssig macht.

Schlüsselmerkmale von EF Core

  1. Modellierung von Entitäten: EF Core ermöglicht es Entwicklern, Datenmodelle mithilfe von Plain Old CLR Objects (POCOs) zu definieren. Diese Entitätsklassen repräsentieren Datenbanktabellen, wobei Eigenschaften den Tabellenspalten zugeordnet sind.

  2. LINQ-Unterstützung: EF Core unterstützt nahtlos LINQ-Abfragen (Language Integrated Query), sodass Entwickler stark typisierte Abfragen gegen den SQL Server oder jede andere Datenbank mit vertrauter C#-Syntax schreiben können. Dies macht das Abfragen von Daten intuitiv und verringert die Wahrscheinlichkeit von Laufzeitfehlern. Auch rohe SQL-Anweisungen können zusammen mit LINQ-Abfragen verwendet werden.

  3. Datenbankmigrationen: Das Verwalten von Änderungen am Datenbankschema kann eine Herausforderung sein, insbesondere in einer Teamumgebung. EF Core vereinfacht diesen Prozess, indem es Datenbankmigrationen bereitstellt, die es Entwicklern ermöglichen, inkrementelle Änderungen am Datenbankschema mit Code-First-Migrationen anzuwenden.

  4. Lazy Loading und Eager Loading: EF Core unterstützt sowohl Lazy Loading als auch Eager Loading Strategien, die es Entwicklern ermöglichen, die Leistung zu optimieren, indem verwandte Daten bei Bedarf oder im Voraus geladen werden, je nach Anwendungsfall.

  5. Transaktionsverwaltung: Transaktionen gewährleisten Datenkonsistenz und -integrität während Datenbankoperationen. EF Core erlaubt es Entwicklern, mit Transaktionen explizit zu arbeiten, sodass eine Gruppe von Datenbankoperationen entweder gemeinsam erfolgreich oder fehlschlagen.

  6. Gleichzeitigkeitskontrolle: EF Core bietet integrierte Unterstützung zur Verwaltung von Konkurrenzkonflikten, sodass Entwickler Konflikte erkennen und beheben können, die auftreten können, wenn mehrere Benutzer versuchen, dieselben Daten gleichzeitig zu ändern.

Einstieg mit EF Core

Lassen Sie uns ein einfaches Beispiel für die Verwendung von SQLite mit Entity Framework Core (EF Core) in einer ASP.NET Core-Anwendung erstellen. Hier sind die Schritte:

  1. Erstellen Sie Ihre Anwendung:

    • Beginnen Sie mit der Erstellung einer Konsolen- oder ASP.NET-Anwendung.
  2. Erforderliche Pakete installieren:

    • Fügen Sie die folgenden NuGet-Pakete zu Ihrem Projekt hinzu:

      • Microsoft.EntityFrameworkCore (Version 1.0.0 oder höher)
      • Microsoft.EntityFrameworkCore.Sqlite (Version 1.0.0 oder höher)
  3. Erstellen Sie Ihren Datenbankkontext:

    • Definieren Sie eine Klasse für Ihren Datenbankkontext (z. B. DatabaseContext), die von DbContext erbt.
    • Im OnConfiguring-Methode die SQLite-Verbindungszeichenfolge festlegen:

      public class DatabaseContext : DbContext
      {
       protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
       {
           optionsBuilder.UseSqlite("Filename=sample.db");
       }
      }
      public class DatabaseContext : DbContext
      {
       protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
       {
           optionsBuilder.UseSqlite("Filename=sample.db");
       }
      }
      $vbLabelText   $csharpLabel
  4. Den Kontext erfassen:

    • In Ihrer Startup-Klasse fügen Sie Ihren Kontext zu den Diensten hinzu:

      public void ConfigureServices(IServiceCollection services)
      {
       services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>();
      }
      public void ConfigureServices(IServiceCollection services)
      {
       services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>();
      }
      $vbLabelText   $csharpLabel
  5. Datenbank beim Start erstellen:

    • Im Startup-Konstruktor erstellen Sie Ihre Datenbank:

      public Startup(IHostingEnvironment env)
      {
       using (var client = new DatabaseContext())
       {
           client.Database.EnsureCreated();
       }
      }
      public Startup(IHostingEnvironment env)
      {
       using (var client = new DatabaseContext())
       {
           client.Database.EnsureCreated();
       }
      }
      $vbLabelText   $csharpLabel
  6. Verwenden Sie SQLite in Ihrer Anwendung:

    • Jetzt können Sie SQLite in Ihrer ASP.NET Core-Anwendung über EF Core verwenden.
    • Definieren Sie Ihre Modelle und verwenden Sie den DatabaseContext, um mit der Datenbank zu interagieren.

Denken Sie daran, dass dies ein einfaches Beispiel ist und es andere Möglichkeiten gibt, die Verbindungszeichenfolge zu konfigurieren und EF Core zu verwenden. Fühlen Sie sich frei, fortgeschrittenere Funktionen zu erkunden und dies an Ihre spezifischen Bedürfnisse anzupassen!

Best Practices für die EF Core Entwicklung

  1. DbContext eingeschränkt halten: DbContext-Instanzen in EF Core sind so konzipiert, dass sie kurzlebig sind und typischerweise auf die Lebensdauer einer einzelnen Anfrage in Webanwendungen beschränkt sein sollten.

  2. AsNoTracking für schreibgeschützte Operationen verwenden: Wenn schreibgeschützte Operationen ausgeführt werden, bei denen keine Änderungen an Entitäten erwartet werden, verwenden Sie die AsNoTracking-Methode, um die Leistung zu verbessern, indem die Änderungsverfolgung umgangen wird.

  3. Abfragen optimieren: Schreiben Sie effiziente Abfragen, indem Sie geeignete Indizierungs-, Paginierungs- und Filtertechniken verwenden, um die Menge der von der Datenbank abgerufenen Daten zu minimieren.

  4. Vermeidung von N+1-Abfrageproblemen: Achten Sie auf das N+1-Abfrageproblem, bei dem für jedes verbundene Entität in einer Sammlung eine Abfrage ausgeführt wird. Verwenden Sie Eager Loading oder explizites Laden, um verwandte Daten effizient abzurufen.

  5. Leistung überwachen: Überwachen Sie die Leistung von EF Core mithilfe von Tools wie Entity Framework Profiler oder eingehenden Log-Fähigkeiten, um Leistungsengpässe zu identifizieren und anzugehen.

Einführung in IronPDF

Entity Framework Core (Wie es für Entwickler funktioniert): Abbildung 1 - IronPDF

IronPDF ist eine leistungsstarke C# PDF-Bibliothek, die es ermöglicht, PDF-Dokumente in .NET-Projekten zu erstellen, zu bearbeiten und Inhalte daraus zu extrahieren. Hier sind einige wichtige Funktionen:

  1. HTML-zu-PDF-Konvertierung:

    • Konvertieren Sie HTML-, CSS- und JavaScript-Inhalte in das PDF-Format.
    • Verwenden Sie die Chrome-Rendering-Engine für pixelgenaue PDFs.
    • PDFs aus URLs, HTML-Dateien oder HTML-Strings erstellen.
  2. Bild- und Inhaltskonvertierung:

    • Konvertieren Sie Bilder in und aus PDF.
    • Extrahieren Sie Text und Bilder aus bestehenden PDFs.
    • Unterstützung für verschiedene Bildformate.
  3. Bearbeitung und Manipulation:

    • Setzen Sie Eigenschaften, Sicherheit und Berechtigungen für PDFs.
    • Fügen Sie digitale Signaturen hinzu.
    • Metadaten und Versionsverlauf bearbeiten.
  4. Plattformübergreifende Unterstützung:

    • Funktioniert mit .NET Core (8, 7, 6, 5 und 3.1+), .NET Standard (2.0+) und .NET Framework (4.6.2+).
    • Kompatibel mit Windows, Linux und macOS.
    • Auf NuGet für eine einfache Installation verfügbar.

PDF-Dokumente mit IronPDF in Verbindung mit EF Core erzeugen

Erstellen Sie zunächst eine Konsolenanwendung mit Visual Studio wie unten beschrieben.

Entity Framework Core (Wie es für Entwickler funktioniert): Abbildung 2 - Neues Projekt

Projektname bereitstellen.

Entity Framework Core (Wie es für Entwickler funktioniert): Abbildung 3 - Projektkonfiguration

.NET plattformübergreifende Version bereitstellen.

Entity Framework Core (Wie es für Entwickler funktioniert): Abbildung 4 - Framework

Microsoft.EntityFrameworkCore-Paket installieren.

Entity Framework Core (Wie es für Entwickler funktioniert): Abbildung 5 - Microsoft.EntityFrameworkCore-Paket

Microsoft.EntityFrameworkCore.SqlLite-Paket installieren.

Entity Framework Core (Wie es für Entwickler funktioniert): Abbildung 6 - Microsoft.EntityFrameworkCore.SqlLite-Paket

IronPDF-Paket installieren.

Entity Framework Core (Wie es für Entwickler funktioniert): Abbildung 7 - IronPDF

Fügen Sie den folgenden Code zu Program.cs hinzu.

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; }
    }
}
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; }
    }
}
$vbLabelText   $csharpLabel

Code-Erklärung

  1. Einrichtung des Renderers und Inhalts:

    • Der Code beginnt mit der Erstellung eines HTML-Inhalts-Strings mit einer Überschrift (<h1>) und einer Unterüberschrift (<h2>) zum Hinzufügen von Studenten zur Datenbank.
    • Ziel ist es, ein PDF-Dokument mit IronPDF zu generieren, das Informationen über die Studenten enthält.
  2. Datenbankkontext und Hinzufügen von Studenten:

    • Die DatabaseContext-Klasse wird verwendet, um mit der Datenbank zu interagieren.
    • client.Database.EnsureCreated(); stellt sicher, dass die Datenbank und die Tabelle existieren.
    • client.Students.ExecuteDelete(); löscht alle vorhandenen Daten aus der Students-Tabelle.
    • Studenten werden definiert und der Datenbank hinzugefügt. Die Eigenschaften umfassen StudentName, DateOfBirth, Height, Weight und Grade.
    • client.SaveChanges(); speichert die Änderungen in der Datenbank.
  3. Studenten anzeigen:

    • Der Code ruft alle Studenten mit client.Students.ToList(); ab.
    • Für jeden Studenten druckt er den Namen, die ID, die Note, das Gewicht und die Größe und fügt diese Informationen dem HTML-Inhalt hinzu.
  4. Rendering nach PDF:

    • Der ChromePdfRenderer wird instanziiert.
    • Der HTML-Inhalt wird mittels renderer.RenderHtmlAsPdf(content) in ein PDF gerendert.
    • Schließlich wird das PDF als "AwesomeEfCoreAndIronPdf.pdf" gespeichert.

Ausgabe

Entity Framework Core (Wie es für Entwickler funktioniert): Abbildung 8 - Konsolenausgabe

PDF

Entity Framework Core (Wie es für Entwickler funktioniert): Abbildung 9 - PDF-Ausgabe

IronPDF Lizenzierung

Das IronPDF-Paket erfordert eine Lizenz zum Ausführen und Erstellen des PDFs. Fügen Sie den folgenden Code am Anfang der Anwendung hinzu, bevor das Paket aufgerufen wird.

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
$vbLabelText   $csharpLabel

Eine Testlizenz ist auf der IronPDF-Lizenzierungsseite verfügbar.

Abschluss

Entity Framework Core in C# bietet eine robuste und intuitive Möglichkeit, mit Datenbanken zu interagieren und bietet Funktionen wie LINQ-Unterstützung, Datenbankmigrationen und Transaktionsverwaltung direkt aus der Box. Indem Sie die Best Practices befolgen und seine leistungsstarken Fähigkeiten nutzen, können Entwickler skalierbare und wartbare Anwendungen mühelos erstellen. Egal, ob Sie ein erfahrener Entwickler sind oder gerade anfangen, EF Core ist ein wertvolles Werkzeug in Ihrem Werkzeugkasten für modernen Datenzugriff in C#-Anwendungen. Andererseits ist IronPDF eine .NET-Bibliothek zur Erstellung, Bearbeitung und Darstellung von PDF-Dokumenten innerhalb Ihrer Anwendungen. Sie können es zusammen mit EF Core verwenden, um HTML-Inhalte (einschließlich Bildern) in eine PDF-Datei umzuwandeln.

Häufig gestellte Fragen

Was ist Entity Framework Core und warum ist es nützlich?

Entity Framework Core (EF Core) ist ein Open-Source, leichtgewichtiges ORM (Object-Relational Mapping)-Tool, das den Datenzugriff vereinfacht, indem es Entwicklern ermöglicht, mit Datenbanken über .NET-Objekte zu interagieren, wodurch manuelle SQL-Abfragen überflüssig werden.

Wie kann ich HTML-Inhalte in einem .NET-Projekt in PDF konvertieren?

Sie können IronPDF, eine .NET-Bibliothek, verwenden, um HTML-Inhalte, einschließlich der aus einer Datenbank abgerufenen Daten, in eine PDF-Datei zu konvertieren. Es ermöglicht eine nahtlose Integration von Datenverarbeitung und Dokumentenerstellung in C#-Anwendungen.

Wie geht EF Core mit Datenbankmigrationen um?

EF Core bietet die Möglichkeit zu Datenbankmigrationen, die es Entwicklern ermöglichen, schrittweise Änderungen am Datenbankschema mithilfe von Code-First-Migrationen anzuwenden und sicherstellen, dass die Datenbankstruktur mit den Datenmodellen der Anwendung übereinstimmt.

Was sind die Vorteile der Verwendung von Lazy Loading und Eager Loading in EF Core?

Lazy Loading und Eager Loading sind Strategien in EF Core zur Optimierung der Datenabrufleistung. Lazy Loading lädt verwandte Daten bei Bedarf, während Eager Loading verwandte Daten im Voraus abruft und so die Anzahl der erforderlichen Abfragen reduziert.

Wie verwaltet EF Core Transaktionen?

EF Core unterstützt das explizite Transaktionsmanagement und stellt sicher, dass eine Reihe von Datenbankoperationen entweder alle erfolgreich ausgeführt oder alle gemeinsam fehlschlagen, wodurch die Datenkonsistenz und -integrität im gesamten Prozess erhalten bleibt.

Was sind einige Best Practices für die Verwendung von EF Core?

Best Practices für EF Core umfassen, dass Instanzen von DbContext auf eine einzelne Anforderung beschränkt werden, AsNoTracking für schreibgeschützte Operationen zur Leistungsverbesserung verwendet wird, Abfragen optimiert werden und das N+1-Abfrageproblem vermieden wird.

Wie kann IronPDF zusammen mit EF Core verwendet werden?

IronPDF kann zusammen mit EF Core verwendet werden, um PDF-Dokumente aus HTML-Inhalten zu generieren, einschließlich Daten aus einer von EF Core verwalteten Datenbank. Diese Kombination ermöglicht eine effiziente Datenverwaltung und Dokumentenerstellung in .NET-Anwendungen.

Was ist erforderlich, um eine .NET-Bibliothek zur PDF-Generierung in einem Projekt zu verwenden?

Um IronPDF zu verwenden, müssen Sie das IronPDF-Paket über NuGet installieren und einen gültigen Lizenzschlüssel haben. Eine Testlizenz ist auf der IronPDF-Lizenzseite verfügbar.

Wie unterstützt EF Core die Abfrage von Daten?

EF Core unterstützt LINQ-Abfragen, die es Entwicklern ermöglichen, stark typisierte Abfragen mit C#-Syntax zu schreiben. Es ermöglicht auch die Ausführung von rohen SQL-Anweisungen für komplexere Datenoperationen.

Wie kann man mit EF Core in einer .NET-Anwendung anfangen?

Um mit EF Core zu starten, richten Sie eine Konsolen- oder ASP.NET-Anwendung ein, installieren Sie die notwendigen NuGet-Pakete wie Microsoft.EntityFrameworkCore, definieren Sie Ihre Datenmodelle, konfigurieren Sie die Datenbankverbindung und erstellen Sie einen DbContext zur Verwaltung von Datenoperationen.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der führend in der C# PDF-Technologie ist. Als ursprünglicher Entwickler der Iron Software-Kerncodebasis hat er die Produktarchitektur des Unternehmens seit seiner Gründung gestaltet und zusammen mit CEO Cameron Rimington in ein Unternehmen ...

Weiterlesen