.NET 帮助

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

发布 2024年八月13日
分享:

介绍

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

本文将为您提供有关在项目中利用LiteDB功能的准确指导。 我们还介绍了使用IronPDF,这是一款由IronSoftware开发的.NET库,用于生成和操作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"的集合。 然后创建一个包含各种属性的Product对象数组,比如ID、名称和价格。 数组中的每个产品都被插入数据库内的“products”集合。 在成功插入所有产品后,它会在控制台上打印确认消息。

输出为

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

示例:简化用户数据管理

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

该代码定义了一个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,嵌入式 NoSQL 数据库用于 .NET

LiteDB 非常适合无需用户并发的小型到中型应用程序。 例如,它非常适合用于个人控制台应用程序,在那里您希望简单而快速地存储数据。 完全用C#开发,它轻量级,占用空间不到450KB,而且不依赖外部依赖项。

一些更多的要点,这些要点列在他们的GitHub 页面:

  1. 无服务器 NoSQL 文档存储

  2. 简单的 API,类似于 MongoDB

  3. 线程安全

  4. LiteDB完全使用C#编写,与.NET 4.5、NETStandard 1.3/2.0兼容,打包成一个占用空间不足450KB的单个DLL文件。

  5. ACID 全事务支持

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

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

  8. 您可以轻松映射您的传统 CLR 对象(POCO)使用 LiteDB 提供的属性或流畅的映射器 API 将类转换为 BsonDocument。

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

    1. 单数据文件存储(像 SQLite)
  10. 为快速搜索建立索引文档字段

    1. 对查询的LINQ支持
  11. 类似 SQL 的命令用于访问/转换数据

    14.LiteDB Studio- 良好的数据访问用户界面

  12. 开源且免费对所有人开放——包括商业用途

IronPDF简介:一个C# PDF库

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

IronPDF,首屈一指的C# PDF库,实现了无缝创建,编辑操控PDFs在.NET项目中的使用。 它提供了一个全面的 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 库,通过其 HTML 到 PDF 转换和 NuGet 集成,简化了在 .NET 项目中生成和操作 PDF 的过程。 LiteDB 和 IronPDF 都为开发人员提供了有价值的工具,LiteDB 擅长于数据库管理,而 IronPDF 擅长于 PDF 处理。

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

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

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

免费NuGet下载 总下载量: 11,622,374 查看许可证 >