C#でLiteDBを操作する方法

LiteDBは、.Net用の高速でシンプルなゼロ構成の組み込みNoSQLデータベースです。これは、ユーザーごとに1つのデータファイルが必要であるが、多くの同時書き込み操作をサポートする必要がない単純なアプリケーション(Web、モバイル、またはデスクトップ)に適しています。この記事では、C#を使用してこのデータベースを操作する方法の概要を説明します。

LiteDBの使用を開始する前に、いくつかの概念を見てみましょう。LiteDBは、ドキュメントとコレクションを処理します。ドキュメントは、データファイルとの間でデータを保存および取得するために使用されます。ドキュメント定義は、POCOクラスまたはBsonDocumentクラスのいずれかであることに注意してください。いずれにせよ、LiteDBは、データベースに保存される前に、ドキュメントをBSON形式に変換します。

LiteDBは、コレクションと呼ばれるドキュメントストア内でドキュメントを整理します。ちなみに、各コレクションは一意の名前で識別され、同じスキーマを共有する1つ以上のドキュメントが含まれています。ドキュメントを操作するには、コレクションのメソッドを利用できます。使用できる方法のリストは次のとおりです。

  • Insert-コレクションに新しいドキュメントを追加するために使用されます
  • Update-既存のドキュメントを更新するために使用されます
  • Delete-ドキュメントの削除に使用
  • FindByIdまたはFind—ドキュメントのクエリに使用されます
  • Include-他のコレクションからプロパティを設定するために使用されます
  • EnsureIndex-新しいインデックスが存在しない場合に作成するために使用されます

LiteDBはサーバーレスデータベースであるため、システムにインストールする必要はありません。プロジェクトにLiteDB.dllファイルへの参照を追加するだけです。または、Visual StudioのNuGetパッケージマネージャーを使用するか、NuGetパッケージマネージャーのコマンドラインツールで次のコマンドを入力して、LiteDBをインストールすることもできます。

> Install-Package LiteDB

C#のLiteDBでPOCOクラスを作成します

Visual Studioで新しいコンソールアプリケーションプロジェクトを作成し、名前を付けて保存します。次に、POCOクラスを作成します。このクラスを使用して、強く型付けされたドキュメントを作成します。IdLiteDBを操作するには、クラスに名前付きプロパティが必要であることに注意してください。または、クラス内の任意のプロパティを[BsonId]属性で装飾することもできます。Authorこの例で使用するクラスは次のとおりです。

パブリッククラス作成者

    {{

        public int Id {get; セットする; }

        public string FirstName {get; セットする; }

        パブリック文字列LastName {get; セットする; }

    }

Idプロパティは、ユニークかつnullではないはずです。Idプロパティを空のままにすると、LiteDBはIdレコードを挿入するときにを自動的に生成します。

C#のLiteDBにレコードを挿入します

次のコードスニペットを使用して、新しいAuthorインスタンスを作成し、レコードを挿入できます。

using(var db = new LiteDatabase(connectionString))

    {{

       var collection = db.GetCollection( "authors");

       var author = new Author

         {{

             ファーストネーム、

             苗字、

             住所

          };

         collection.Insert(author);

     }

上記のコードスニペットを参照してください。LiteDatabase接続文字列をパラメータとして渡すことにより、の新しいインスタンスがどのように作成されるかに注意してください。次のステートメントは、コレクションを取得するか、コレクションが存在しない場合は新しいコレクションを作成します。Insertコレクションインスタンスのメソッドを呼び出すと、Idプロパティの値が自動的に生成され、ドキュメントがデータベースに挿入されます。

C#でLiteDBをクエリする

データベースに新しいレコードを挿入したので、以下のコードスニペットに示すようにクエリを実行できます。

using(var db = new LiteDatabase(connectionString))

   {{

     var collection = db.GetCollection( "authors");

     var author = collection.FindById(1);

     Console.WriteLine(author.FirstName +“ \ t” + author.LastName);

   }

このFindByIdメソッドは、そのドキュメントIdまたは主キーインデックスによってドキュメントを返すことに注意してください。EnsureIndex以下に示す方法を使用して、明示的にインデックスを作成できます。

authors.EnsureIndex(“ FirstName”);

C#でLiteDBのドキュメントを更新する

ドキュメントの更新は簡単です。Update以下に示すように、プロパティ値を変更してから、コレクションインスタンスのメソッドを呼び出すだけです。

var author = collection.FindById(1);

author.Address;

collection.Update(作成者);

特定の場所に住んでいるすべての著者を検索する場合は、次のクエリを使用できます。

var results = collection.Find(x => x.Address.Contains(“ Hyderabad”));

LiteRepositoryCRUD操作の実行を少し簡単にするという別のクラスがあります。これは、このクラスの使用方法を示す例です。

using(var db = new LiteRepository(connectionString))

            {{

                db.Insert(新しい作成者

               { 名前苗字、

               住所 });

            }

LiteDBのファイルの操作

LiteDBは、FileStorageファイルを操作するためのコレクションを提供します。ファイルのアップロードまたはダウンロードは簡単です。FileStorage以下のコードスニペットに示すように、コレクションで適切なメソッドを呼び出すだけです。ファイルをアップロードするには:

db.FileStorage.Upload(“ Author-Photo”、@” C:\ Temp \ Joydip.jpg”); //ファイルをデータベースにアップロードします
ファイルをダウンロードするには:
db.FileStorage.Download(“ Author-Photo”、@” C:\\ Joydip.jpg”); //ファイルをファイルシステムにダウンロードします

LiteDBは、ファイルを処理するために2つのコレクションを作成することに注意してください。これらにはとが含ま_files_chunksます。_filesコレクションには、ファイルのメタデータに関連する情報_chunksが含まれ、ストレージ用に適切に分割されたデータが含まれています。