.NET 帮助

LiteDB .NET(开发人员使用指南)

发布 2024年八月13日
分享:

简介

LiteDB 是一个简单、快速和轻量级的嵌入式 .NET 文档数据库。LiteDB .NET 的灵感来自 MongoDB 数据库,其 API 与 MongoDB 的官方 .NET API 非常相似。LiteDB 是一个无服务器数据库,非常适合小型项目和移动应用程序。

这篇文章将为您提供关于在项目中利用 LiteDB 功能的准确指导。我们还介绍了由 IronSoftware 制作的 .NET 库 IronPDF,用于生成和操作 PDF,以及如何将其用于将 LiteDB 数据库内容输出为 PDF 以便查看和共享。

LiteDB 的主要功能

  1. 嵌入式数据库: 无需单独的服务器。LiteDB 在您的应用程序进程内运行。

  2. 单一数据文件: 您可以在单个文件数据库中存储所有数据,简化部署和备份。

  3. BSON 格式: 使用 BSON 格式进行存储,确保快速的读写操作。

  4. LINQ 支持: 完全支持 LINQ 查询,使 .NET 开发人员使用更直观。

  5. ACID 事务: 支持 ACID 事务,确保数据完整性。

  6. 跨平台: 可在 Windows、Linux 和 macOS 上运行。

在 .NET 项目中设置 LiteDB

在 Visual Studio 中打开您的项目。然后,在解决方案资源管理器中右键点击您的项目,选择“管理 NuGet 包”。搜索 LiteDB 并安装它,以便轻松地将此数据库解决方案集成到您的项目中。

另外,您也可以使用包管理器控制台来安装它。在 NuGet 包管理器控制台中安装 LiteDB,请使用以下命令:

Install-Package LiteDB
Install-Package LiteDB
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

开始使用LiteDB

安装后,您可以在应用程序中开始使用LiteDB。让我们通过一些例子来说明它的使用。

示例 1:创建和插入数据

首先,让我们创建一个简单的 Product 类来表示我们的数据:

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; }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

接下来,我们将创建一个数据库并插入一些产品:

using LiteDB;
using System;
class Program
{
   static void Main()
{
    using (var db = new LiteDatabase(@"MyData.db"))
    {
        var products = db.GetCollection<Product>("products");
        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 }
        };
        foreach (var product in productList)
        {
            products.Insert(product);
        }
        Console.WriteLine("Product inserted successfully.");
    }
}
}
using LiteDB;
using System;
class Program
{
   static void Main()
{
    using (var db = new LiteDatabase(@"MyData.db"))
    {
        var products = db.GetCollection<Product>("products");
        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 }
        };
        foreach (var product in productList)
        {
            products.Insert(product);
        }
        Console.WriteLine("Product inserted successfully.");
    }
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代码描述

代码初始化与名为 "MyData.db" 的 LiteDB 数据库的连接,并检索名为 "products" 的集合。然后创建一个包含各种属性(如 ID、Name 和 Price)的 Product 对象数组。数组中的每个产品都被插入到数据库中的 "products" 集合中。在成功插入所有产品后,它会在控制台上打印确认消息。

输出如下:

LiteDB .NET(开发者如何使用):图1 - 上一个代码的控制台输出

示例:简化用户数据管理

想象一下,您正在开发一个管理用户账户的移动应用程序。每个用户都有一个包含他们姓名、电子邮件地址和偏好的个人资料。 (存储为JSON对象)以及一个喜欢的项目列表。以下是 LiteDb.NET 如何简化您的数据存储:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<string> FavoriteItems { get; set; }
}

public class UserManager
{
    private LiteDatabase _db;

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

    public void AddUser(User user)
    {
        var usersCollection = _db.GetCollection<User>("users");
        usersCollection.Insert(user);
    }

    public User GetUser(int id)
    {
        var usersCollection = _db.GetCollection<User>("users");
        return usersCollection.FindById(id);
    }

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

    public void DeleteUser(int id)
    {
        var usersCollection = _db.GetCollection<User>("users");
        usersCollection.Delete(id);
    }
}
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<string> FavoriteItems { get; set; }
}

public class UserManager
{
    private LiteDatabase _db;

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

    public void AddUser(User user)
    {
        var usersCollection = _db.GetCollection<User>("users");
        usersCollection.Insert(user);
    }

    public User GetUser(int id)
    {
        var usersCollection = _db.GetCollection<User>("users");
        return usersCollection.FindById(id);
    }

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

    public void DeleteUser(int id)
    {
        var usersCollection = _db.GetCollection<User>("users");
        usersCollection.Delete(id);
    }
}
Public Class User
	Public Property Id() As Integer
	Public Property Name() As String
	Public Property FavoriteItems() As List(Of String)
End Class

Public Class UserManager
	Private _db As LiteDatabase

	Public Sub New(ByVal connectionString As String)
		_db = New LiteDatabase(connectionString)
	End Sub

	Public Sub AddUser(ByVal user As User)
		Dim usersCollection = _db.GetCollection(Of User)("users")
		usersCollection.Insert(user)
	End Sub

	Public Function GetUser(ByVal id As Integer) As User
		Dim usersCollection = _db.GetCollection(Of User)("users")
		Return usersCollection.FindById(id)
	End Function

	Public Sub UpdateUser(ByVal user As User)
		Dim usersCollection = _db.GetCollection(Of User)("users")
		usersCollection.Update(user)
	End Sub

	Public Sub DeleteUser(ByVal id As Integer)
		Dim usersCollection = _db.GetCollection(Of User)("users")
		usersCollection.Delete(id)
	End Sub
End Class
VB   C#

这个代码定义了一个 User 类来表示用户数据以及一个 UserManager 类来管理 LiteDb.NET 数据库中的用户操作。

using LiteDB;
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;
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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

该实现有效利用了 LiteDb.NET 的功能来进行用户数据管理。User 类存储用户信息,而 UserManager 类提供了在数据库中保存、检索、更新和删除用户的方法。

LiteDB,为 .NET 提供的嵌入式 NoSQL 数据库

LiteDB 非常适合没有用户并发需求的中小型应用程序。例如,它非常适合在个人控制台应用程序中快速简单地存储数据。完全用 C# 开发,它体积轻巧,占用不到 450KB,不依赖外部依赖项。

一些更多的要点,列在他们的GitHub 页面1. 无服务器 NoSQL 文档存储

  1. 简单的 API,类似 MongoDB

  2. 线程安全

  3. 完全用C#编写,LiteDB兼容.NET 4.5,NETStandard 1.3/2.0,打包成一个小于450KB的单个DLL文件。

  4. 带完整事务支持的ACID

  5. 写入失败后的数据恢复 (WAL 日志文件)

使用DES的数据文件加密 (AES) 密码学

  1. 您可以轻松映射您的普通旧CLR对象 (POCO) 将类转换为BsonDocument,可以使用属性或LiteDB提供的流式映射器API。

  2. 存储文件和流数据 (如MongoDB中的GridFS)

    1. 单一数据文件存储 (像 SQLite)
  3. 索引文档字段以实现快速搜索

  4. 对查询的LINQ支持

  5. 类似SQL的命令用于访问/转换数据 LiteDB Studio – 方便的数据访问界面

  6. 开源并免费面向所有人 - 包括商业用途

IronPDF 简介:PDF 库

LiteDB .NET(开发人员如何使用):图2 - IronPDF网页

IronPDF,首屈一指的C# PDF库,实现了无缝 创建,编辑操控 在.NET项目中处理PDF。它提供了一个全面的API,用于以下任务: HTML 转 PDF 转换、动态PDF生成和数据提取。利用.NET Chromium引擎,确保HTML准确渲染为PDF文件,满足.NET Core、.NET Standard和.NET Framework的各种项目需求。IronPDF确保从HTML内容生成PDF的精度、简便性和效率,支持Web、桌面和控制台应用程序。

安装IronPDF库

要在项目中启动IronPDF,请通过Visual Studio中的NuGet包管理器安装该库。然后,只需按照以下简单步骤操作:

  1. 打开Visual Studio并导航到解决方案资源管理器。
  2. 右键单击“依赖项”,然后选择“管理NuGet包”选项。
  3. 选择“浏览”选项卡并搜索“IronPdf”。
  4. 选择IronPDF并点击“安装”。

或者,您也可以在Visual Studio中使用包管理器控制台,通过执行以下命令来安装该库:

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

使用IronPDF与LiteDB的示例

以下是一个简单的代码示例,展示了如何使用IronPDF从HTML内容生成PDF,使用'using'语句确保资源的正确释放。在这里,我们结合了LiteDB和IronPDF的功能,展示了如何将LiteDB中的数据输出为PDF以供查看:

using DemoLiteDB1;
using LiteDB;
using System.Text;
class Program
{
    static void Main()
    {
        using (var db = new LiteDatabase(@"MyData.db"))
        {
            var products = db.GetCollection<Product>("products");
            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 }
            };
            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)
    {
        IronPdf.License.LicenseKey = "Your-License-Key";
        Console.WriteLine("PDF Generating Started...");
        var renderer = new ChromePdfRenderer();
        Console.WriteLine("PDF Processing ....");
        var pdf = renderer.RenderHtmlAsPdf(data);
        string filePath = "Data.pdf";
        pdf.SaveAs(filePath);
        Console.WriteLine($"PDF Generation Completed, File Saved as {filePath}");
    }
    public static string GenerateHtml(List<Product> products)
    {
        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>");
        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 DemoLiteDB1;
using LiteDB;
using System.Text;
class Program
{
    static void Main()
    {
        using (var db = new LiteDatabase(@"MyData.db"))
        {
            var products = db.GetCollection<Product>("products");
            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 }
            };
            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)
    {
        IronPdf.License.LicenseKey = "Your-License-Key";
        Console.WriteLine("PDF Generating Started...");
        var renderer = new ChromePdfRenderer();
        Console.WriteLine("PDF Processing ....");
        var pdf = renderer.RenderHtmlAsPdf(data);
        string filePath = "Data.pdf";
        pdf.SaveAs(filePath);
        Console.WriteLine($"PDF Generation Completed, File Saved as {filePath}");
    }
    public static string GenerateHtml(List<Product> products)
    {
        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>");
        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();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代码连接到一个LiteDB数据库,添加一个产品列表,检索所有产品,并生成产品列表的HTML表示形式。然后使用IronPDF库将这个HTML内容创建为PDF文件。该过程包括添加产品、获取产品、将产品列表转换为HTML以及生成PDF的方法。

输出

LiteDB .NET(对开发人员的运作方式):图3 - 上述代码的控制台输出

PDF文件输出

LiteDB .NET(它对开发人员的工作原理):图4 - 从先前的代码输出的PDF

结论

LiteDB为C#开发者提供了一种轻量级、无服务器的嵌入式文档数据库解决方案,非常适合小型项目和移动应用程序,具有类似MongoDB的API、嵌入式数据库和跨平台兼容性。

同时, IronPDF 作为一款顶级的C# PDF库,IronPDF凭借其HTML到PDF转换和NuGet集成,简化了.NET项目中的PDF生成和操作。LiteDB和IronPDF都为开发人员提供了有价值的工具,其中LiteDB在数据库管理方面表现出色,IronPDF则在处理PDF方面表现卓越。

IronPDF提供 免费试用 以解锁其在PDF生成和操作中的全部潜力。

< 前一页
RestEase C#(开发人员如何使用)
下一步 >
FireSharp C#(它对开发者的工作原理)

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >