LiteDB .NET (Como funciona para desenvolvedores)
LiteDB é um banco de dados de documentos .NET incorporado, simples, rápido e leve. O LiteDB .NET foi inspirado no banco de dados MongoDB e sua API é muito semelhante à API oficial do MongoDB for .NET . O LiteDB é um banco de dados sem servidor que funciona bem para projetos pequenos e aplicativos móveis.
Este artigo fornecerá instruções precisas sobre como utilizar os recursos do LiteDB em seus projetos. Também apresentamos o uso do IronPDF, uma biblioteca .NET criada pela Iron Software, para gerar e manipular PDFs, e como você pode utilizá-la para exportar o conteúdo de um banco de dados LiteDB como um PDF para visualização e compartilhamento.
Principais características do LiteDB
- Banco de dados embutido: Não há necessidade de um servidor separado. O LiteDB é executado dentro do processo da sua aplicação.
- Arquivo de dados único: Você pode armazenar todos os seus dados em um único arquivo de banco de dados, simplificando a implantação e o backup.
- Formato BSON: Utiliza o formato BSON para armazenamento, garantindo operações rápidas de leitura e gravação.
- Suporte a LINQ: Oferece suporte completo a LINQ para consultas, tornando-o intuitivo para desenvolvedores .NET .
- Transações ACID: Garante a integridade dos dados com suporte para transações ACID.
- Multiplataforma: Funciona no Windows, Linux e macOS.
Configurando o LiteDB em projetos .NET
Abra seu projeto no Visual Studio. Em seguida, no Solution Explorer, clique com o botão direito do mouse no seu projeto e escolha "Gerenciar Pacotes NuGet ". Procure por LiteDB e instale-o para incorporar essa solução de banco de dados ao seu projeto sem esforço.
Alternativamente, você pode instalá-lo usando o Console do Gerenciador de Pacotes. Para instalar o LiteDB no Console do Gerenciador de Pacotes NuGet , use o seguinte comando:
Install-Package LiteDB
Primeiros passos com o LiteDB
Após a instalação, você poderá começar a usar o LiteDB em sua aplicação. Vejamos alguns exemplos para ilustrar sua utilização.
Exemplo 1: Criando e inserindo dados
Primeiro, vamos criar uma classe simples Product para representar nossos dados:
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; }
}
Public Class Product
Public Property Id As Integer
Public Property Name As String
Public Property Price As Decimal
End Class
Em seguida, criaremos um banco de dados e inseriremos alguns produtos:
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.");
}
}
}
Imports LiteDB
Imports System
Friend Class Program
Shared Sub Main()
' Open the database (or create it if it doesn't exist)
Using db = New LiteDatabase("MyData.db")
' Get a collection (or create, if it doesn't exist)
Dim products = db.GetCollection(Of Product)("products")
' Create a list of products to insert into the database
Dim productList = {
New Product With {
.Id = 201,
.Name = "Apple",
.Price = 0.99D
},
New Product With {
.Id = 202,
.Name = "Banana",
.Price = 0.59D
},
New Product With {
.Id = 203,
.Name = "Orange",
.Price = 0.79D
},
New Product With {
.Id = 204,
.Name = "Grape",
.Price = 2.99D
},
New Product With {
.Id = 205,
.Name = "Watermelon",
.Price = 4.99D
}
}
' Insert each product into the collection
For Each product In productList
products.Insert(product)
Next product
Console.WriteLine("Product inserted successfully.")
End Using
End Sub
End Class
Descrição do código
O código inicializa uma conexão com um banco de dados LiteDB chamado "MyData.db" e recupera uma coleção chamada "products". Em seguida, cria um array de objetos com várias propriedades, como ID, Nome e Preço. Cada produto no array é inserido na coleção "products" dentro do banco de dados. Após inserir todos os produtos com sucesso, uma mensagem de confirmação é impressa no console.
O resultado é o seguinte:

Exemplo: Simplificação da gestão de dados do usuário
Imagine que você está desenvolvendo um aplicativo móvel para gerenciar contas de usuários. Cada usuário possui um perfil contendo seu nome, endereço de e-mail, preferências (armazenadas como um objeto JSON) e uma lista de itens favoritos. Veja como o LiteDB .NET pode simplificar o armazenamento de seus dados:
Este código define uma classe User para representar dados do usuário e uma classe UserManager para gerenciar operações do usuário em um banco de dados LiteDB .NET.
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);
}
}
Imports LiteDB
Imports System.Collections.Generic
Public Class User
<BsonId>
Public Property Id() As String
Public Property Name() As String
Public Property Email() As String
Public Property Preferences() As Dictionary(Of String, String)
Public Property FavoriteItems() As List(Of String)
End Class
Public Class UserManager
Private ReadOnly db As LiteDatabase
Public Sub New(ByVal connectionString As String)
db = New LiteDatabase(connectionString)
End Sub
Public Sub SaveUser(ByVal user As User)
Dim collection = db.GetCollection(Of User)("users")
collection.Insert(user)
End Sub
Public Function GetUser(ByVal userId As String) As User
Dim collection = db.GetCollection(Of User)("users")
Return collection.FindById(userId)
End Function
Public Sub UpdateUser(ByVal user As User)
Dim collection = db.GetCollection(Of User)("users")
collection.Update(user)
End Sub
Public Sub DeleteUser(ByVal userId As String)
Dim collection = db.GetCollection(Of User)("users")
collection.Delete(userId)
End Sub
End Class
Essa implementação aproveita de forma eficaz os recursos do LiteDb.NET para gerenciamento de dados do usuário. A classe User armazena informações do usuário, enquanto a classe UserManager fornece métodos para salvar, recuperar, atualizar e excluir usuários no banco de dados.
LiteDB, banco de dados NoSQL incorporado for .NET
O LiteDB é perfeito para aplicações de pequeno a médio porte que não exigem muita concorrência por parte dos usuários. Por exemplo, é ótimo para um aplicativo de console pessoal onde você deseja armazenar dados de forma simples e rápida. Desenvolvido inteiramente em C#, é leve, ocupa menos de 450 KB e não depende de dependências externas.
Mais alguns pontos, que estão listados na página deles no GitHub :
- Armazenamento de documentos NoSQL sem servidor
- API simples, semelhante à do MongoDB.
- Thread-safe
- Escrito inteiramente em C#, o LiteDB é compatível com .NET 4.5, .NET Standard 1.3/2.0, e está empacotado em um único arquivo DLL que ocupa menos de 450 KB.
- ACID com suporte completo a transações
- Recuperação de dados após falha de gravação (arquivo de log WAL)
- Criptografia de arquivos de dados usando criptografia AES
- Você pode mapear facilmente suas classes Plain Old CLR Objects (POCO) para BsonDocument usando atributos ou a API de mapeamento fluente fornecida pelo LiteDB.
- Armazenar arquivos e transmitir dados (como o GridFS no MongoDB)
- Armazenamento de arquivo de dados único (como o SQLite)
- Indexar campos do documento para pesquisa rápida
- Suporte LINQ para consultas
- Comandos semelhantes a SQL para acessar/transformar dados
- LiteDB Studio – Interface amigável para acesso a dados
- Código aberto e gratuito para todos – inclusive para uso comercial.
Introdução ao IronPDF: Biblioteca PDF em C

IronPDF , uma biblioteca C# de PDF de primeira linha, facilita a criação , edição e manipulação de PDFs em projetos .NET . Oferece uma API abrangente para tarefas como conversão de HTML para PDF , geração dinâmica de PDFs e extração de dados. A utilização de um mecanismo Chromium for .NET garante a renderização precisa de HTML em arquivos PDF, atendendo às diversas necessidades de projetos em .NET Core, .NET Standard e .NET Framework. O IronPDF garante precisão, simplicidade e eficiência na geração de PDFs a partir de conteúdo HTML, com suporte para aplicativos web, desktop e console.
Instalando a biblioteca IronPDF
Para iniciar o IronPDF em seu projeto, instale a biblioteca através do Gerenciador de Pacotes NuGet no Visual Studio. Em seguida, basta seguir estes passos simples:
- Abra o Visual Studio e navegue até o Solution Explorer.
- Clique com o botão direito do mouse em Dependências e selecione a opção "Gerenciar Pacotes NuGet ".
- Selecione a aba "Procurar" e pesquise por "IronPDF".
- Selecione IronPDF e clique em "Instalar".
Alternativamente, no Visual Studio, você pode utilizar o Console do Gerenciador de Pacotes para instalar a biblioteca executando o seguinte comando:
Install-Package IronPdf
Exemplo de uso do IronPDF com LiteDB
Aqui está um exemplo de código simples que ilustra o uso do IronPDF para gerar um PDF a partir de conteúdo HTML, empregando a instrução 'using' para garantir o descarte adequado de recursos. Aqui, combinamos as funcionalidades do LiteDB e do IronPDF , mostrando como você pode exportar os dados de um arquivo LiteDB para um PDF para visualização:
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();
}
}
Imports LiteDB
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports IronPdf
Friend Class Program
Shared Sub Main()
Using db = New LiteDatabase("MyData.db")
' Retrieve the 'products' collection or create it
Dim products = db.GetCollection(Of Product)("products")
' Add some initial products to the collection
Dim productList = {
New Product With {
.Id = 101,
.Name = "Apple",
.Price = 0.99D
},
New Product With {
.Id = 102,
.Name = "Banana",
.Price = 0.59D
},
New Product With {
.Id = 103,
.Name = "Orange",
.Price = 0.79D
},
New Product With {
.Id = 104,
.Name = "Grape",
.Price = 2.99D
},
New Product With {
.Id = 105,
.Name = "Watermelon",
.Price = 4.99D
}
}
' Insert products into the LiteDB collection
For Each product In productList
products.Insert(product)
Next product
Console.WriteLine("Product inserted successfully.")
' Fetch all products from the database
Dim allProducts = GetAllProducts(db)
' Generate HTML content from the product list
Dim htmlContent As String = GenerateHtml(allProducts)
' Generate the PDF from the HTML content
GeneratePDF(htmlContent)
Console.WriteLine("PDF generated successfully.")
End Using
End Sub
Public Shared Function GetAllProducts(ByVal db As LiteDatabase) As List(Of Product)
Dim products = db.GetCollection(Of Product)("products")
Return products.FindAll().ToList()
End Function
Public Shared Sub GeneratePDF(ByVal data As String)
' Set your IronPDF license key here
IronPdf.License.LicenseKey = "Your-License-Key"
Console.WriteLine("PDF Generating Started...")
' Create a PDF renderer
Dim renderer = New ChromePdfRenderer()
Console.WriteLine("PDF Processing ....")
' Render the HTML as a PDF
Dim pdf = renderer.RenderHtmlAsPdf(data)
' Save the PDF to a file
Dim filePath As String = "Data.pdf"
pdf.SaveAs(filePath)
Console.WriteLine($"PDF Generation Completed, File Saved as {filePath}")
End Sub
Public Shared Function GenerateHtml(ByVal products As List(Of Product)) As String
' Build HTML table from product list
Dim htmlBuilder As 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
For Each product In products
htmlBuilder.Append($"<tr><td>{product.Id}</td><td>{product.Name}</td><td>{product.Price:C}</td></tr>")
Next product
htmlBuilder.Append("</table></body></html>")
Return htmlBuilder.ToString()
End Function
End Class
O código se conecta a um banco de dados LiteDB, adiciona uma lista de produtos, recupera todos os produtos e gera uma representação HTML da lista de produtos. Esse conteúdo HTML é então usado para criar um arquivo PDF utilizando a biblioteca IronPDF . O processo inclui métodos para adicionar produtos, buscá-los, converter a lista de produtos em HTML e gerar o PDF.
Saída

Saída em formato PDF

Conclusão
O LiteDB oferece aos desenvolvedores C# uma solução de banco de dados de documentos incorporada, leve e sem servidor, ideal para projetos pequenos e aplicativos móveis, com recursos como API inspirada no MongoDB, bancos de dados incorporados e compatibilidade multiplataforma.
Simultaneamente, o IronPDF surge como uma biblioteca C# de PDF de primeira linha, simplificando a geração e manipulação de PDFs em projetos .NET com sua conversão de HTML para PDF e integração com o NuGet . Tanto o LiteDB quanto o IronPDF oferecem ferramentas valiosas para desenvolvedores, com o LiteDB se destacando no gerenciamento de bancos de dados e o IronPDF no processamento de PDFs.
O IronPDF oferece um período de teste gratuito para que você possa explorar todo o seu potencial na geração e manipulação de PDFs.
Perguntas frequentes
Como posso converter conteúdo HTML para PDF em C#?
Você pode converter conteúdo HTML para PDF em C# usando o IronPDF. A biblioteca fornece métodos como RenderHtmlAsPdf , que permite a conversão de strings HTML em documentos PDF.
Qual a melhor forma de integrar o LiteDB a um projeto .NET?
Para integrar o LiteDB a um projeto .NET, você pode usar o Gerenciador de Pacotes NuGet no Visual Studio para instalar o LiteDB. Isso permite que você gerencie seu banco de dados diretamente dentro do seu aplicativo usando C#.
Como posso gerar PDFs a partir de dados do LiteDB?
Para gerar PDFs a partir de dados do LiteDB, você pode usar o IronPDF. Ao extrair dados do LiteDB e renderizá-los usando os recursos do IronPDF, você pode criar documentos PDF para fins de relatório ou compartilhamento.
Posso usar o IronPDF para manipular arquivos PDF existentes em C#?
Sim, o IronPDF pode ser usado para manipular arquivos PDF existentes. Ele oferece funcionalidades para editar, mesclar e extrair conteúdo de PDFs em aplicações C#.
É possível usar o LiteDB para aplicativos móveis?
Sim, o LiteDB é particularmente adequado para aplicações móveis devido à sua natureza leve e sem servidor, além da capacidade de armazenar dados em um único arquivo.
Quais são algumas etapas comuns de solução de problemas para a integração do LiteDB?
As etapas comuns de solução de problemas para a integração do LiteDB incluem verificar se a instalação via NuGet está correta, garantir que o caminho do arquivo do banco de dados esteja acessível e confirmar se a versão do .NET do seu projeto é compatível com o LiteDB.
Como posso garantir a integridade dos dados usando o LiteDB?
O LiteDB suporta transações ACID, que garantem a integridade e a confiabilidade dos dados. Você pode usar transações para manter a consistência e lidar com modificações simultâneas de dados.
Quais são os benefícios de usar o IronPDF para geração de PDFs em .NET?
O IronPDF oferece benefícios como conversão fácil de HTML para PDF, alta precisão na renderização e recursos abrangentes de manipulação de PDF, tornando-o ideal para gerar e manipular PDFs em aplicativos .NET.




