.NET ヘルプ

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

公開済み 2024年8月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サポート: .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#開発者に提供します。

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

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

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