チュートリアル:簡単な方法C .


この記事の目的は、MongoDBサーバのデータを保存して検索するための、より冗長で便利な方法を理解することです.うまくいけば、この記事の終わりまでには、光を見て、SQL ServerとEntity Frameworkを溝に入れて、Mongo電車に乗船することに決めます.

サーバーのインストール


あなたのマシン上で実行しているMongoDBサーバーを持っていない場合は、移動する前に以下のチュートリアルに従ってください.


Scaffoldコンソールアプリケーションプロジェクト


Visual Studio targetを使用した新しいコンソールアプリケーションプロジェクトを作成する.net core またはPowerShell/Cmdウィンドウで次のように入力します.
dotnet new console -n LearnMongo
start .\LearnMongo\LearnMongo.csproj

依存関係のインストール


パッケージマネージャーコンソールを開き、次のコマンドを入力します.
チップtools > nuget package manager > package manager console
Install-Package MongoDB.Entities

データベース接続の初期化


オープンProgram.cs ファイルを作成し、以下のようにします.
using MongoDB.Entities;
using System.Threading.Tasks;

namespace LearnMongo
{
    static class Program
    {
        private async static Task Main()
        {
            await DB.InitAsync("MyDatabase", "localhost", 27017);
        }
    }
}
我々は、このアプリケーションは、データベースと呼ばれるデータを格納することを指定しているMyDatabase 実行中のMongoDBサーバーでlocalhost デフォルトポートのリスニング.

エンティティの保存


新しいクラスファイルを追加Person.cs プロジェクトには次のようになります.
using MongoDB.Entities;
using System;

namespace LearnMongo
{
    public class Person : Entity
    {
        public string Name { get; set; }
        public DateTime DateOfBirth { get; set; }
        public int SiblingCount { get; set; }
    }
}
MongoDBに保持されるメイン/ルートエンティティはクラスから継承しなければなりませんEntity これは以前にインストールしたパッケージによって提供されます.
その後、Program.cs ファイルを作成し、以下のDB初期化行を追加します.
var lisa = new Person
{
    Name = "Lisa Malfrey",
    DateOfBirth = new DateTime(1983, 10, 11),
    SiblingCount = 1
};

await lisa.SaveAsync();

Console.WriteLine($"Lisa's ID: {lisa.ID}");
Console.Read();
今すぐヒットしてプログラムを実行するctrl+f5 . エンティティが保存され、自動的にIDが割り当てられていることがわかります.
注意: IDプロパティはベースから来ますEntity クラスを作成する各エンティティに手動で追加し続ける必要はありません.
DB ManagerまたはMongoシェルを使用してデータベースの中を見ると、コレクションと呼ばれるPerson が作成され、新しいレコードが追加されました.
{
    "_id": ObjectId("5e0c682ddd3765736cb8ca56"),
    "Name": "Lisa Malfrey",
    "DateOfBirth": ISODate("1983-10-10T18:30:00Z"),
    "SiblingCount": 1
}

エンティティの取得


データは、異なる方法のカップルで取得することができます.以下に例を示します:

身分証明書


var result = await DB.Find<Person>().OneAsync(lisa.ID);

Console.WriteLine($"Found Person: {result.Name}");
Console.Read();

兄弟数によって見つけてください


var result = (await DB.Find<Person>()
                      .ManyAsync(p => p.SiblingCount >= 1))
                      .First();

Console.WriteLine($"Count: {result.SiblingCount}");
Console.Read();
ここでは多くを見つけると言うPerson 少なくとも1つの兄弟を持つ実体.the .First() LINQメソッドは、単に見つかったリストから最初の人を選択します.

日付範囲


var result = await DB.Queryable<Person>()
                     .Where(p => p.DateOfBirth > new DateTime(1983, 10, 10) &&
                                 p.DateOfBirth < new DateTime(1983, 10, 12))
                     .FirstOrDefaultAsync();

Console.WriteLine($"Birthday: {result.DateOfBirth.ToLocalTime()}");
Console.Read();
ここで我々はIQueryable インターフェイスは、2つの日付の範囲内に該当する誕生日を持つ最初の人を取得します.

エンティティの更新


完全なエンティティを取得し、プロパティを更新してデータベースに保存したり、最初にそれらを取得せずにエンティティの特定のプロパティを更新することもできます.

完全エンティティの取得による更新


var person = await DB.Find<Person>().OneAsync(lisa.ID);

person.Name = "Lisa Kudrow";
person.SiblingCount = 2;

await person.SaveAsync();

取得せずにプロパティを更新する


await DB.Update<Person>()
        .Match(p => p.ID == lisa.ID)
        .Modify(p => p.Name, "Lisa Kudrow")
        .Modify(p => p.SiblingCount, 2)
        .ExecuteAsync();

次の手順


希望は、上記のコードを十分にあなたの関心を深くどのようにCの経典とMongoDBを使用する方法を学ぶことに行く簡単な方法です.パッケージMongoDB.Entities それは非常にMongoDBサーバーと通信する簡単です.それのAPIのあらゆる側面がofficial website . Githubのソースコードもチェックできます.

DJニットホーク / モンゴルド.実体


エレガントなAPI、LINQサポートとビルトイン実体関係管理によるMongoDBのためのデータアクセスライブラリ



モンゴルド.実体


軽量.美しい標準的なデータアクセスコードを生成するエレガントなAPIの表面に結果の上に便利な機能を追加しながら、公式のドライバを抽象化することによってMongoDBへのアクセスを簡素化することを目的とするほとんどすべてのオーバーヘッドを持つNET標準ライブラリ.

詳しい情報:


詳細なドキュメントの公式サイトをご覧ください.

https://mongodb-entities.com


View on GitHub