.NET ヘルプ

LiteDB .NET (開発者のための仕組み)

更新済み 8月 13, 2024
共有:

イントロダクション

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サポート: .NET開発者が直感的に操作できるように、クエリ用にLINQを完全にサポートしています。

  5. ACIDトランザクション: ACIDトランザクションのサポートにより、データの整合性を確保します。

  6. クロスプラットフォーム: Windows、Linux、およびmacOS上で動作します。

.NETプロジェクトでのLiteDBの設定

Visual Studioでプロジェクトを開きます。 次に、ソリューションエクスプローラーでプロジェクトを右クリックし、"Manage NuGet Packages "を選択します。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がどのようにデータストレージを簡素化できるかを説明します:

このコードでは、ユーザーデータを表す User クラスと、LiteDb.NET データベースのユーザー操作を管理する UserManager クラスを定義しています。

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クラスはデータベース内のユーザーを保存、取得、更新、削除するメソッドを提供します。

.NET 用組み込み NoSQL データベース LiteDB

LiteDBは、ユーザー同時実行を必要としない小規模から中規模のアプリケーションに最適です。 例えば、シンプルかつ迅速にデータを保存したい個人用ゲーム機アプリには最適だ。 C#のみで開発され、450KB以下の軽量で、外部依存に依存しない。

さらにいくつかのポイントがある。GitHubページ:

  1. サーバーレスNoSQLドキュメント・ストア

  2. MongoDBに似たシンプルなAPI

  3. スレッドセーフ

  4. 完全にC#で記述されたLiteDBは、.NET 4.5、NETStandard 1.3/2.0と互換性があり、450KB未満の単一のDLLファイルにパッケージされています。

  5. 完全なトランザクションをサポートするACID

  6. 書き込み失敗後のデータ復旧 (WALログファイル)

  7. DESによるデータファイルの暗号化 (AES) 暗号技術

  8. Plain Old CLR オブジェクトを簡単にマッピングできます。 (ポコ) クラスを BsonDocument に変換するには、属性または LiteDB が提供するフルエントマッパー API を使用します。

  9. ファイルの保存とデータのストリーム (MongoDBのGridFSのように)

    1. 単一データ・ファイル・ストレージ (SQLiteのような)
  10. 高速検索のための文書フィールドのインデックス

    1. クエリーのLINQサポート
  11. SQLライクなコマンドによるデータへのアクセス/変換

    1. LiteDB Studio - データ・アクセスのための優れたUI
  12. オープンソースで、商用利用も含め、誰でも無料で利用できる

IronPDFの紹介: C# PDFライブラリ

LiteDB .NET (開発者のための仕組み):図2 - IronPDFのウェブページ

IronPDFC# PDFライブラリの最高峰であるこのライブラリは、以下のようなシームレスな機能を提供します。 **創造,**編集中、および 操る .NETプロジェクトでPDFの。 以下のようなタスクのための包括的なAPIを提供する。 HTMLからPDFへ 変換、ダイナミックPDF生成、データ抽出。 .NET Chromiumエンジンを利用することで、PDFファイルへのHTMLの正確なレンダリングを保証し、.NET Core、.NET Standard、.NET Frameworkの多様なプロジェクトのニーズに対応します。 IronPDFはウェブ、デスクトップ、コンソールアプリケーションをサポートし、HTMLコンテンツからのPDF生成の正確さ、シンプルさ、効率性を保証します、

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の使用例

HTMLコンテンツからPDFを生成するためにIronPDFを使用する簡単なコード例を示します。 ここでは、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表現を生成します。このHTMLコンテンツはIronPDFライブラリを使ってPDFファイルを作成するために使われます。 このプロセスには、商品を追加するメソッド、商品を取得するメソッド、商品リストをHTMLに変換するメソッド、PDFを生成するメソッドが含まれています。

出力

LiteDB .NET (開発者のための仕組み):図3 - 先ほどのコードのコンソール出力

PDFファイル出力

LiteDB .NET (開発者のための仕組み):図4 - 前のコードから出力されたPDF

結論

LiteDBは、小規模プロジェクトやモバイルアプリケーションに理想的な、軽量でサーバーレスの組み込みドキュメントデータベースソリューションをC#開発者に提供します。

同時にだ、 IronPDF HTMLからPDFへの変換とNuGetの統合により、.NETプロジェクト内でのPDF生成と操作を簡素化し、最高のC# PDFライブラリとして登場した。 LiteDBとIronPDFはどちらも開発者に価値あるツールを提供し、LiteDBはデータベース管理に、IronPDFはPDF処理に秀でている。

IronPDFは提供します 無料トライアル PDFの生成と操作において、その可能性を最大限に引き出すことができます。

< 以前
RestEase C# (開発者のための仕組み)
次へ >
FireSharp C# (開発者のための仕組み)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >