ホームページ  >  記事  >  バックエンド開発  >  MongoDB を asp.net コアと統合するための完全な手順を学習します。

MongoDB を asp.net コアと統合するための完全な手順を学習します。

coldplay.xixi
coldplay.xixi転載
2020-07-18 16:47:082783ブラウズ

MongoDB を asp.net コアと統合するための完全な手順を学習します。

1. MongoDB の序文と紹介##最近統合中私自身のフレームワークでは、MongoDBD の最も単純な CRUD をコンポーネントとしてリファクタリングし、asp.net core プロジェクトに統合しました。もちろん、この記事では mongodb のクラスター展開については説明しません。機会があれば共有します。

まず、MongoDB の公式ドキュメントでは、MongoDb の 2.4 以降の .Net ドライバーが .Net Core 2.0 をサポートしていることがわかります。


MongoDB については、誰もがよく知っており、使用したことがなくても聞いたことがあると思います。

関連する学習に関する推奨事項:
ASP.NET ビデオ チュートリアル

#1. mongodb とは何ですか?

MongoDB は、分散ファイル ストレージに基づくデータベースです。Web アプリケーションにスケーラブルで高性能のデータ ストレージ ソリューションを提供します。リレーショナル データベースと非リレーショナル データベースの中間の製品です。リレーショナル: 最も機能が豊富なデータベース。データ処理のための強力なツールです。

2. リレーショナル データベースと非リレーショナル データベースとは何ですか?

リレーショナル データベース: 私たちが使用した sqlserver や mysql などはすべてリレーショナル データベースであり、リレーショナル データベースは ACID 原則に従い、厳密な一貫性を持っています。

非リレーショナル データベース: NoSQL とも呼ばれ、非常に大規模なデータを保存するために使用されます。このタイプのデータ ストレージは固定モデルを必要とせず、冗長な操作なしで水平に拡張できます。

3. RDBMS VS NoSQL

RDBMS:

高度に組織化された構造化データ

構造化クエリ言語

データとリレーションシップは別のテーブルに保存されます

厳密な一貫性

基本トランザクション

NoSQL:

宣言型クエリ言語なし

Key-値ペア ストレージ、列ストレージ、ドキュメント ストレージなど。

結果整合性

構造化されていない予測不可能なデータ

CAP 定理、高可用性、高パフォーマンス、高スケーラビリティ

この時点で、洞察力の鋭い学生は CAP 定理と結果整合性に気づき、間違いなく分散システムについて考えるようになるはずです。分散システムの nosql と完全に組み合わせることで、パフォーマンスを向上させることができます。

4. 誰もが理解できるように、RDBMS と Mongodb の概念をいくつか紹介します。

次のように翻訳します。

2. Asp.net コアは mongoDB を統合します

1. デモの便宜のために、私はダウンロードしましたmongodb サーバーの Windows バージョン

公式 Web サイトにアクセスして自分でダウンロードできます。ビジュアル インターフェイスには Robo 3T ツールを使用しました。非常にシンプルで美しい視覚化ツール。誰でも使えるのでおすすめです。

インストールが完了すると、Windows サービスに mongodb サーバーが表示されます。

次に、Robo 3T を開いて mongodb に接続します。

2. プロジェクトで mongodb の構成を開始しましょう

最初のステップ: 新しい Core2 を作成します。 0 クラス ライブラリ

では、「MongoDB.Driver」nuget パッケージが導入されています。

次に、Startup.csの Services の拡張メソッドを拡張しました。

//扩展方法public static class ServiceCollectionExtensions
 {
 public static void AddMongoDB(this IServiceCollection services, IConfiguration configuration)
 {
  services.Configure<Settings>(options =>
  {
  options.ConnectionString = configuration.GetSection("MongoConnection:ConnectionString").Value;
  options.Database = configuration.GetSection("MongoConnection:Database").Value;
  });
 }
 }

2 番目のステップ: mongodb をカプセル化する CRUD クラスをリファクタリングします。ここで自分でカプセル化し、表示するだけにすることもできます。検索して追加します。

public class MongoDBBase
 {
 private readonly IMongoDatabase _database = null;
 public MongoDBBase(string connectionString, string databaseName)
 {
  var client = new MongoClient(connectionString);
  if (client != null)
  {
  _database = client.GetDatabase(databaseName);
  }
 }

 #region SELECT
 /// <summary>
 /// 根据查询条件,获取数据
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="id"></param>
 /// <returns></returns>
 public List<T> GetList<T>(Expression<Func<T, bool>> conditions = null)
 {
  var collection = _database.GetCollection<T>(typeof(T).Name);
  if (conditions != null)
  {
  return collection.Find(conditions).ToList();
  }
  return collection.Find(_ => true).ToList();
 }#endregion

 #region INSERT/// <summary>
 /// 插入多条数据,数据用list表示
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="list"></param>
 /// <returns></returns>
 public List<T> InsertMany<T>(List<T> list)
 {
  var collection = _database.GetCollection<T>(typeof(T).Name);
  collection.InsertMany(list);
  return list;
 }
 #endregion
 }
ステップ 3: 新しい asp.net core webapi プロジェクトを作成し、デモンストレーション用にこのタイプのライブラリを参照します

mongodb を appsetting.json に追加します。 project 接続文字列: ここではカスタム データ名 testdb を使用します。mongodb に挿入すると、データベース、コレクション、ドキュメントが自動的に作成されます。次に、下を見てください

 "MongoConnection": { //mongodb数据库连接
 "ConnectionString": "mongodb://127.0.0.1:27017",
 "Database": "testdb",
 "IsSSL": true
 },

ステップ 4: 新しい mongodb テスト コントローラーを作成し、単一および複数の項目を挿入してクエリを実行するためのインターフェイスを表示します。

[Produces("application/json")]
 [Route("api/MongoDB/[action]")]
 public class MongoDBController : Controller
 {
  private readonly MongoDBBase _context = null;
  public MongoDBController(IOptions<Settings> settings)
  {
   _context = new MongoDBBase(settings.Value.ConnectionString, settings.Value.Database);
  }
  [HttpGet]
  public IActionResult AddList()
  {
   List<MongoDBPostTest> list = new List<MongoDBPostTest>()
   {
    new MongoDBPostTest()
    {
     Id = "2",
     Body = "Test note 3",
     UpdatedOn = DateTime.Now,
     UserId = 1,
     HeaderImage = new NoteImage
     {
      ImageSize = 10,
      Url = "http://localhost/image1.png",
      ThumbnailUrl = "http://localhost/image1_small.png"
     }
    },
    new MongoDBPostTest()
    {
     Id = "3",
     Body = "Test note 4",
     UpdatedOn = DateTime.Now,
     UserId = 1,
     HeaderImage = new NoteImage
     {
      ImageSize = 14,
      Url = "http://localhost/image3.png",
      ThumbnailUrl = "http://localhost/image3_small.png"
     }
    }
   };

   try
   {
    _context.InsertMany(list);
   }
   catch (Exception ex)
   {

    throw;
   }

   return Ok("成功");
  }

  [HttpGet]
  public Result<List<MongoDBPostTest>> SelectSingle()
  {
   //无条件
   var list = _context.GetList<MongoDBPostTest>();

   //有条件
   //var list = _context.GetList<MongoDBPostTest>(a => a.Id == "1");

   //得到单条数据,无条件
   //var list = _context.GetSingle<MongoDBPostTest>();

   //得到单条数据,有条件
   //var list = _context.GetSingle<MongoDBPostTest>(a => a.Id == "3");

   ObjectId internalId = _context.GetInternalId("5bbf41651d3b66668cbb5bfc");

   var a = _context.GetSingle<MongoDBPostTest>(note => note.Id == "5bbf41651d3b66668cbb5bfc" || note.InternalId == internalId);

   return ResHelper.Suc(1, list, "成功");
  }
}
テスト クラス
public class MongoDBPostTest
 {
  [BsonId]
  // standard BSonId generated by MongoDb
  public ObjectId InternalId { get; set; }
  public string Id { get; set; }

  public string Body { get; set; } = string.Empty;

  [BsonDateTimeOptions]
  public DateTime UpdatedOn { get; set; } = DateTime.Now;

  public NoteImage HeaderImage { get; set; }

  public int UserId { get; set; } = 0;
 }

public class NoteImage
 {
  public string Url { get; set; } = string.Empty;
  public string ThumbnailUrl { get; set; } = string.Empty;
  public long ImageSize { get; set; } = 0L;
 }

ステップ 5: プロジェクトを実行して実行します。

複数のデータを挿入してみましょう。実行は成功します。

その後、データベースを調べたところ、データ コンテンツを含む testdb データベースが生成されていることがわかりました。

次に、次のクエリ操作を実行します。挿入したばかりのデータを返します。

注: ここで解決すべき落とし穴があります。それは、mongodb に保存されている時刻は UTC であるということです。時差は8時間です。したがって、ここでは特別な処理時間が必要になります。

3. 概要

この時点では、mongodb の簡​​単な使用法が示されています。後で、公式に従って拡張できます。ドキュメントを読み、さらに拡張してみると、ますます興味深いことがわかるでしょう。ご協力ありがとうございました。ありがとう。

以上がMongoDB を asp.net コアと統合するための完全な手順を学習します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。