Zum Fußzeileninhalt springen
.NET HILFE

LiteDB .NET (Wie es für Entwickler funktioniert)

LiteDB ist eine einfache, schnelle und leichte eingebettete .NET-Dokumentdatenbank. LiteDB .NET wurde von der MongoDB-Datenbank inspiriert und seine API ist sehr ähnlich zur offiziellen MongoDB .NET API. LiteDB ist eine serverlose Datenbank, die sich gut für kleine Projekte und mobile Anwendungen eignet.

Dieser Artikel liefert Ihnen genaue Anweisungen zur Nutzung der Funktionen von LiteDB in Ihren Projekten. Wir stellen auch die Verwendung von IronPDF vor, einer von Iron Software entwickelten .NET-Bibliothek zur Erstellung und Bearbeitung von PDFs und wie Sie sie verwenden können, um den Inhalt einer LiteDB-Datenbank als PDF auszugeben, um ihn anzuzeigen und weiterzugeben.

Hauptmerkmale von LiteDB

  1. Eingebettete Datenbank: Kein separater Server erforderlich. LiteDB läuft innerhalb des Prozesses Ihrer Anwendung.
  2. Einzelne Daten-Datei: Sie können alle Ihre Daten in einer einzigen Dateidatenbank speichern, was die Bereitstellung und Sicherung vereinfacht.
  3. BSON-Format: Verwendet das BSON-Format zur Speicherung, was schnelle Lese- und Schreibvorgänge gewährleistet.
  4. LINQ-Unterstützung: Unterstützt vollumfänglich LINQ für Abfragen, was es für .NET-Entwickler intuitiv macht.
  5. ACID-Transaktionen: Gewährleistet die Datenintegrität mit Unterstützung für ACID-Transaktionen.
  6. Plattformübergreifend: Funktioniert auf Windows, Linux und macOS.

Einrichten von LiteDB in .NET-Projekten

Öffnen Sie Ihr Projekt in Visual Studio. Klicken Sie dann im Lösungsexplorer mit der rechten Maustaste auf Ihr Projekt und wählen Sie "NuGet-Pakete verwalten". Suchen Sie nach LiteDB und installieren Sie es, um diese Datenbanklösung mühelos in Ihr Projekt zu integrieren.

Alternativ können Sie es mit der Package Manager Console installieren. Um LiteDB in der NuGet Package Manager Console zu installieren, verwenden Sie den folgenden Befehl:

Install-Package LiteDB

Einstieg mit LiteDB

Sobald es installiert ist, können Sie LiteDB in Ihrer Anwendung verwenden. Lassen Sie uns Beispiele durchgehen, um die Nutzung zu zeigen.

Beispiel 1: Erstellen und Einfügen von Daten

Erstellen wir zunächst eine einfache Produkt-Klasse, um unsere Daten darzustellen:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}
$vbLabelText   $csharpLabel

Als nächstes erstellen wir eine Datenbank und fügen einige Produkte ein:

using LiteDB;
using System;

class Program
{
    static void Main()
    {
        // Open the database (or create it if it doesn't exist)
        using (var db = new LiteDatabase(@"MyData.db"))
        {
            // Get a collection (or create, if it doesn't exist)
            var products = db.GetCollection<Product>("products");

            // Create a list of products to insert into the database
            var productList = new[]
            {
                new Product { Id = 201, Name = "Apple", Price = 0.99m },
                new Product { Id = 202, Name = "Banana", Price = 0.59m },
                new Product { Id = 203, Name = "Orange", Price = 0.79m },
                new Product { Id = 204, Name = "Grape", Price = 2.99m },
                new Product { Id = 205, Name = "Watermelon", Price = 4.99m }
            };

            // Insert each product into the collection
            foreach (var product in productList)
            {
                products.Insert(product);
            }

            Console.WriteLine("Product inserted successfully.");
        }
    }
}
using LiteDB;
using System;

class Program
{
    static void Main()
    {
        // Open the database (or create it if it doesn't exist)
        using (var db = new LiteDatabase(@"MyData.db"))
        {
            // Get a collection (or create, if it doesn't exist)
            var products = db.GetCollection<Product>("products");

            // Create a list of products to insert into the database
            var productList = new[]
            {
                new Product { Id = 201, Name = "Apple", Price = 0.99m },
                new Product { Id = 202, Name = "Banana", Price = 0.59m },
                new Product { Id = 203, Name = "Orange", Price = 0.79m },
                new Product { Id = 204, Name = "Grape", Price = 2.99m },
                new Product { Id = 205, Name = "Watermelon", Price = 4.99m }
            };

            // Insert each product into the collection
            foreach (var product in productList)
            {
                products.Insert(product);
            }

            Console.WriteLine("Product inserted successfully.");
        }
    }
}
$vbLabelText   $csharpLabel

Codebeschreibung

Der Code initialisiert eine Verbindung zu einer LiteDB-Datenbank namens "MyData.db" und ruft eine Sammlung namens "produkte" ab. Anschließend wird ein Array von Produkt-Objekten mit verschiedenen Eigenschaften wie ID, Name und Preis erstellt. Jedes Produkt im Array wird in die "produkte"-Sammlung innerhalb der Datenbank eingefügt. Nach erfolgreichem Einfügen aller Produkte druckt es eine Bestätigungsnachricht auf die Konsole.

Ausgabe ist wie folgt:

LiteDB .NET (Funktionsweise für Entwickler): Abbildung 1 - Konsolenausgabe des vorherigen Codes

Beispiel: Rationalisierung der Benutzerdatenverwaltung

Stellen Sie sich vor, Sie entwickeln eine mobile Anwendung, die Benutzerkonten verwaltet. Jeder Benutzer hat ein Profil, das seinen Namen, seine E-Mail-Adresse, Präferenzen (gespeichert als JSON-Objekt) und eine Liste bevorzugter Artikel enthält. So kann LiteDb.NET Ihre Datenspeicherung vereinfachen:

Dieser Code definiert eine Benutzer-Klasse, um die Benutzerdaten zu repräsentieren, und eine BenutzerManager-Klasse, um Benutzeroperationen in einer LiteDb.NET-Datenbank zu verwalten.

using LiteDB;
using System.Collections.Generic;

public class User
{
    [BsonId]
    public string Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public Dictionary<string, string> Preferences { get; set; }
    public List<string> FavoriteItems { get; set; }
} 

public class UserManager
{
    private readonly LiteDatabase db;

    public UserManager(string connectionString)
    {
       db = new LiteDatabase(connectionString);
    }

    public void SaveUser(User user)
    {
        var collection = db.GetCollection<User>("users");
        collection.Insert(user);
    }

    public User GetUser(string userId)
    {
        var collection = db.GetCollection<User>("users");
        return collection.FindById(userId);
    }

    public void UpdateUser(User user)
    {
        var collection = db.GetCollection<User>("users");
        collection.Update(user);
    }

    public void DeleteUser(string userId)
    {
        var collection = db.GetCollection<User>("users");
        collection.Delete(userId);
    }
}
using LiteDB;
using System.Collections.Generic;

public class User
{
    [BsonId]
    public string Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public Dictionary<string, string> Preferences { get; set; }
    public List<string> FavoriteItems { get; set; }
} 

public class UserManager
{
    private readonly LiteDatabase db;

    public UserManager(string connectionString)
    {
       db = new LiteDatabase(connectionString);
    }

    public void SaveUser(User user)
    {
        var collection = db.GetCollection<User>("users");
        collection.Insert(user);
    }

    public User GetUser(string userId)
    {
        var collection = db.GetCollection<User>("users");
        return collection.FindById(userId);
    }

    public void UpdateUser(User user)
    {
        var collection = db.GetCollection<User>("users");
        collection.Update(user);
    }

    public void DeleteUser(string userId)
    {
        var collection = db.GetCollection<User>("users");
        collection.Delete(userId);
    }
}
$vbLabelText   $csharpLabel

Diese Implementierung nutzt die Möglichkeiten von LiteDb.NET für die Verwaltung von Benutzerdaten effektiv aus. Die Benutzer-Klasse speichert Benutzerinformationen, während die BenutzerManager-Klasse Methoden zum Speichern, Abrufen, Aktualisieren und Löschen von Benutzern innerhalb der Datenbank bereitstellt.

LiteDB, eingebettete NoSQL-Datenbank für .NET

LiteDB ist perfekt für kleine bis mittelgroße Anwendungen ohne Benutzerkonkurrenzbedarf. Beispielsweise eignet es sich hervorragend für eine persönliche Konsolen-App, bei der Sie Daten einfach und schnell speichern möchten. Entwickelt ausschließlich in C#, ist es leichtgewichtig, nimmt weniger als 450KB ein und ist nicht auf externe Abhängigkeiten angewiesen.

Weitere Punkte, die auf ihrer GitHub-Seite aufgeführt sind:

  1. Serverloses NoSQL-Dokumentenspeicher
  2. Einfache API, ähnlich wie MongoDB
  3. Thread-sicher
  4. Vollständig in C# geschrieben, LiteDB ist kompatibel mit .NET 4.5, NETStandard 1.3/2.0, und wird in eine einzelne DLL-Datei verpackt, die weniger als 450KB beansprucht.
  5. ACID mit vollständiger Transaktionsunterstützung
  6. Datenwiederherstellung nach Schreibfehlern (WAL-Protokolldatei)
  7. Datenverschlüsselung mit AES-Kryptographie
  8. Sie können Ihre Plain Old CLR Objects (POCO)-Klassen problemlos mithilfe von Attributen oder dem von LiteDB bereitgestellten Fluent-Mapper-API zu BsonDocument zuordnen.
  9. Dateien speichern und Daten streamen (wie GridFS in MongoDB)
  10. Einzelne Datei-Datenablage (wie SQLite)
  11. Indizieren von Dokumentfelder für schnelle Suche
  12. LINQ-Unterstützung für Abfragen
  13. SQL-ähnliche Befehle für den Zugriff/die Transformation von Daten
  14. LiteDB Studio – Schöne Benutzeroberfläche für den Datenzugriff
  15. Open Source und kostenlos für alle – einschließlich kommerzieller Nutzung

Einführung in IronPDF: Eine C# PDF-Bibliothek

LiteDB .NET (Funktionsweise für Entwickler): Abbildung 2 - IronPDF-Webseite

IronPDF, eine erstklassige C# PDF-Bibliothek, erleichtert die nahtlose Erstellung, Bearbeitung und Manipulation von PDFs in .NET-Projekten. Es bietet eine umfassende API für Aufgaben wie die HTML-zu-PDF-Konvertierung, dynamische PDF-Erstellung und Datenauszug. Durch die Nutzung einer .NET-Chromium-Engine wird eine genaue Wiedergabe von HTML in PDF-Dateien gewährleistet, die den unterschiedlichen Projektanforderungen über .NET Core, .NET Standard und .NET Framework gerecht wird. IronPDF garantiert Präzision, Einfachheit und Effizienz bei der PDF-Erstellung aus HTML-Inhalten mit Unterstützung für Web-, Desktop- und Konsolenanwendungen.

Installation der IronPDF-Bibliothek

Um IronPDF in Ihrem Projekt zu initiieren, installieren Sie die Bibliothek über den NuGet Package Manager in Visual Studio. Befolgen Sie dann einfach diese einfachen Schritte:

  1. Öffnen Sie Visual Studio und navigieren Sie zum Lösungsexplorer.
  2. Klicken Sie mit der rechten Maustaste auf Abhängigkeiten und wählen Sie die Option "NuGet-Pakete verwalten" aus.
  3. Wählen Sie die Registerkarte "Durchsuchen" und suchen Sie nach "IronPDF".
  4. Wählen Sie IronPDF und klicken Sie auf "Installieren".

Alternativ können Sie innerhalb von Visual Studio die Package Manager Console verwenden, um die Bibliothek zu installieren, indem Sie den folgenden Befehl ausführen:

Install-Package IronPdf

Beispiel für die Verwendung von IronPDF mit LiteDB

Hier ist ein einfaches Codebeispiel, das die Verwendung von IronPDF zur Erstellung eines PDFs aus HTML-Inhalten zeigt, wobei die 'using'-Anweisung verwendet wird, um eine ordnungsgemäße Ressourcenfreigabe sicherzustellen. Hier kombinieren wir die Funktionalität von LiteDB und IronPDF, indem wir zeigen, wie Sie die Daten innerhalb einer LiteDB als PDF für Anzeigezwecke ausgeben können:

using LiteDB;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IronPdf;

class Program
{
    static void Main()
    {
        using (var db = new LiteDatabase(@"MyData.db"))
        {
            // Retrieve the 'products' collection or create it
            var products = db.GetCollection<Product>("products");

            // Add some initial products to the collection
            var productList = new[]
            {
                new Product { Id = 101, Name = "Apple", Price = 0.99m },
                new Product { Id = 102, Name = "Banana", Price = 0.59m },
                new Product { Id = 103, Name = "Orange", Price = 0.79m },
                new Product { Id = 104, Name = "Grape", Price = 2.99m },
                new Product { Id = 105, Name = "Watermelon", Price = 4.99m }
            };

            // Insert products into the LiteDB collection
            foreach (var product in productList)
            {
                products.Insert(product);
            }

            Console.WriteLine("Product inserted successfully.");

            // Fetch all products from the database
            var allProducts = GetAllProducts(db);

            // Generate HTML content from the product list
            string htmlContent = GenerateHtml(allProducts);

            // Generate the PDF from the HTML content
            GeneratePDF(htmlContent);

            Console.WriteLine("PDF generated successfully.");
        }
    }

    public static List<Product> GetAllProducts(LiteDatabase db)
    {
        var products = db.GetCollection<Product>("products");
        return products.FindAll().ToList();
    }

    public static void GeneratePDF(string data)
    {
        // Set your IronPDF license key here
        IronPdf.License.LicenseKey = "Your-License-Key";
        Console.WriteLine("PDF Generating Started...");

        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        Console.WriteLine("PDF Processing ....");

        // Render the HTML as a PDF
        var pdf = renderer.RenderHtmlAsPdf(data);

        // Save the PDF to a file
        string filePath = "Data.pdf";
        pdf.SaveAs(filePath);

        Console.WriteLine($"PDF Generation Completed, File Saved as {filePath}");
    }

    public static string GenerateHtml(List<Product> products)
    {
        // Build HTML table from product list
        StringBuilder htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<html><head><style>table { width: 100%; border-collapse: collapse; } th, td { border: 1px solid black; padding: 8px; text-align: left; }</style></head><body>");
        htmlBuilder.Append("<h1>Product List</h1>");
        htmlBuilder.Append("<table><tr><th>ID</th><th>Name</th><th>Price</th></tr>");

        // Add each product row to the HTML table
        foreach (var product in products)
        {
            htmlBuilder.Append($"<tr><td>{product.Id}</td><td>{product.Name}</td><td>{product.Price:C}</td></tr>");
        }

        htmlBuilder.Append("</table></body></html>");
        return htmlBuilder.ToString();
    }
}
using LiteDB;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IronPdf;

class Program
{
    static void Main()
    {
        using (var db = new LiteDatabase(@"MyData.db"))
        {
            // Retrieve the 'products' collection or create it
            var products = db.GetCollection<Product>("products");

            // Add some initial products to the collection
            var productList = new[]
            {
                new Product { Id = 101, Name = "Apple", Price = 0.99m },
                new Product { Id = 102, Name = "Banana", Price = 0.59m },
                new Product { Id = 103, Name = "Orange", Price = 0.79m },
                new Product { Id = 104, Name = "Grape", Price = 2.99m },
                new Product { Id = 105, Name = "Watermelon", Price = 4.99m }
            };

            // Insert products into the LiteDB collection
            foreach (var product in productList)
            {
                products.Insert(product);
            }

            Console.WriteLine("Product inserted successfully.");

            // Fetch all products from the database
            var allProducts = GetAllProducts(db);

            // Generate HTML content from the product list
            string htmlContent = GenerateHtml(allProducts);

            // Generate the PDF from the HTML content
            GeneratePDF(htmlContent);

            Console.WriteLine("PDF generated successfully.");
        }
    }

    public static List<Product> GetAllProducts(LiteDatabase db)
    {
        var products = db.GetCollection<Product>("products");
        return products.FindAll().ToList();
    }

    public static void GeneratePDF(string data)
    {
        // Set your IronPDF license key here
        IronPdf.License.LicenseKey = "Your-License-Key";
        Console.WriteLine("PDF Generating Started...");

        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        Console.WriteLine("PDF Processing ....");

        // Render the HTML as a PDF
        var pdf = renderer.RenderHtmlAsPdf(data);

        // Save the PDF to a file
        string filePath = "Data.pdf";
        pdf.SaveAs(filePath);

        Console.WriteLine($"PDF Generation Completed, File Saved as {filePath}");
    }

    public static string GenerateHtml(List<Product> products)
    {
        // Build HTML table from product list
        StringBuilder htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<html><head><style>table { width: 100%; border-collapse: collapse; } th, td { border: 1px solid black; padding: 8px; text-align: left; }</style></head><body>");
        htmlBuilder.Append("<h1>Product List</h1>");
        htmlBuilder.Append("<table><tr><th>ID</th><th>Name</th><th>Price</th></tr>");

        // Add each product row to the HTML table
        foreach (var product in products)
        {
            htmlBuilder.Append($"<tr><td>{product.Id}</td><td>{product.Name}</td><td>{product.Price:C}</td></tr>");
        }

        htmlBuilder.Append("</table></body></html>");
        return htmlBuilder.ToString();
    }
}
$vbLabelText   $csharpLabel

Der Code verbindet sich mit einer LiteDB-Datenbank, fügt eine Liste von Produkten hinzu, ruft alle Produkte ab und generiert eine HTML-Darstellung der Produktliste. Dieser HTML-Inhalt wird dann verwendet, um eine PDF-Datei mithilfe der IronPDF-Bibliothek zu erstellen. Der Prozess umfasst Methoden zum Hinzufügen von Produkten, Abrufen dieser, Umwandlung der Produktliste in HTML und zur Erstellung des PDFs.

Ausgabe

LiteDB .NET (Funktionsweise für Entwickler): Abbildung 3 - Konsolenausgabe des vorherigen Codes

PDF-Datei-Ausgabe

LiteDB .NET (Funktionsweise für Entwickler): Abbildung 4 - Ausgegebene PDF aus dem vorherigen Code

Abschluss

LiteDB bietet C#-Entwicklern eine leichte, serverlose eingebettete Dokumentdatenbanklösung, die ideal für kleine Projekte und mobile Anwendungen ist und über Funktionen wie MongoDB-inspirierte API, eingebettete Datenbanken und plattformübergreifende Kompatibilität verfügt.

Gleichzeitig erweist sich IronPDF als erstklassige C#-PDF-Bibliothek, die die PDF-Erstellung und -Bearbeitung innerhalb von .NET-Projekten durch ihre HTML-zu-PDF-Konvertierung und NuGet-Integration vereinfacht. Sowohl LiteDB als auch IronPDF bieten wertvolle Werkzeuge für Entwickler, wobei LiteDB in der Datenbankverwaltung und IronPDF in der PDF-Bearbeitung herausragt.

IronPDF bietet eine kostenlose Testversion, um sein volles Potenzial in der PDF-Erstellung und -Bearbeitung freizuschalten.

Häufig gestellte Fragen

Wie kann ich HTML-Inhalte in PDF in C# umwandeln?

Sie können HTML-Inhalte in C# mit IronPDF in PDF konvertieren. Die Bibliothek bietet Methoden wie RenderHtmlAsPdf, die es ermöglichen, HTML-Strings in PDF-Dokumente zu konvertieren.

Was ist der beste Weg, um LiteDB in ein .NET-Projekt zu integrieren?

Um LiteDB mit einem .NET-Projekt zu integrieren, können Sie den NuGet-Paketmanager in Visual Studio verwenden, um LiteDB zu installieren. Dies ermöglicht es Ihnen, Ihre Datenbank direkt innerhalb Ihrer Anwendung mit C# zu verwalten.

Wie kann ich PDFs aus LiteDB-Daten generieren?

Um PDFs aus LiteDB-Daten zu generieren, können Sie IronPDF verwenden. Durch das Extrahieren von Daten aus LiteDB und das Rendern mit den Fähigkeiten von IronPDF können Sie PDF-Dokumente zum Berichtswesen oder zum Teilen erstellen.

Kann ich IronPDF verwenden, um bestehende PDF-Dateien in C# zu bearbeiten?

Ja, IronPDF kann verwendet werden, um bestehende PDF-Dateien zu bearbeiten. Es bietet Funktionen zum Bearbeiten, Zusammenführen und Extrahieren von Inhalten aus PDFs innerhalb von C#-Anwendungen.

Ist es möglich, LiteDB für mobile Anwendungen zu verwenden?

Ja, LiteDB eignet sich besonders gut für mobile Anwendungen aufgrund seiner leichten, serverlosen Natur und der Fähigkeit, Daten in einer einzigen Datei zu speichern.

Was sind einige häufige Schritte zur Fehlerbehebung bei der LiteDB-Integration?

Häufige Schritte zur Fehlerbehebung bei der LiteDB-Integration umfassen die Überprüfung der korrekten Installation über NuGet, die Sicherstellung, dass Ihr Datenbank-Pfad zugänglich ist, und die Bestätigung, dass die .NET-Version Ihres Projekts mit LiteDB kompatibel ist.

Wie kann ich die Datenintegrität mit LiteDB sicherstellen?

LiteDB unterstützt ACID-Transaktionen, die Datenintegrität und Zuverlässigkeit gewährleisten. Sie können Transaktionen nutzen, um Konsistenz zu bewahren und gleichzeitige Datenänderungen zu handhaben.

Was sind die Vorteile der Nutzung von IronPDF zur PDF-Erstellung in .NET?

IronPDF bietet Vorteile wie einfache HTML-zu-PDF-Konvertierung, hohe Genauigkeit beim Rendern und umfassende PDF-Bearbeitungsfunktionen, was es ideal für die Erstellung und Handhabung von PDFs in .NET-Anwendungen macht.

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