ホームページ バックエンド開発 C#.Net チュートリアル MongoDB を asp.net コアと統合するための完全な手順を学習します。

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

Jul 18, 2020 pm 04:47 PM
asp.net core mongodb

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

navicat を mongodb に接続する方法 navicat を mongodb に接続する方法 Apr 24, 2024 am 11:27 AM

Navicat を使用して MongoDB に接続するには、次の手順を実行する必要があります: Navicat をインストールする MongoDB 接続を作成します: a. 接続名、ホスト アドレス、およびポートを入力します b. 認証情報を入力します (必要な場合) SSL 証明書を追加します (必要な場合) 接続を確認します接続を保存する

net4.0の用途は何ですか net4.0の用途は何ですか May 10, 2024 am 01:09 AM

.NET 4.0 はさまざまなアプリケーションの作成に使用され、オブジェクト指向プログラミング、柔軟性、強力なアーキテクチャ、クラウド コンピューティングの統合、パフォーマンスの最適化、広範なライブラリ、セキュリティ、スケーラビリティ、データ アクセス、モバイルなどの豊富な機能をアプリケーション開発者に提供します。開発サポート。

サーバーレスアーキテクチャでのJava関数とデータベースの統合 サーバーレスアーキテクチャでのJava関数とデータベースの統合 Apr 28, 2024 am 08:57 AM

サーバーレス アーキテクチャでは、Java 関数をデータベースと統合して、データベース内のデータにアクセスして操作できます。主な手順には、Java 関数の作成、環境変数の構成、関数のデプロイ、および関数のテストが含まれます。これらの手順に従うことで、開発者はデータベースに保存されているデータにシームレスにアクセスする複雑なアプリケーションを構築できます。

DebianでMongoDB自動拡張を構成する方法 DebianでMongoDB自動拡張を構成する方法 Apr 02, 2025 am 07:36 AM

この記事では、自動拡張を実現するためにDebianシステムでMongodbを構成する方法を紹介します。主な手順には、Mongodbレプリカセットとディスクスペース監視のセットアップが含まれます。 1。MongoDBのインストール最初に、MongoDBがDebianシステムにインストールされていることを確認してください。次のコマンドを使用してインストールします。sudoaptupdatesudoaptinstinstall-yymongodb-org2。mongodbレプリカセットMongodbレプリカセットの構成により、自動容量拡張を達成するための基礎となる高可用性とデータ冗長性が保証されます。 Mongodbサービスを開始:Sudosystemctlstartmongodsudosys

DebianでMongodbの高可用性を確保する方法 DebianでMongodbの高可用性を確保する方法 Apr 02, 2025 am 07:21 AM

この記事では、Debianシステムで非常に利用可能なMongoDBデータベースを構築する方法について説明します。データのセキュリティとサービスが引き続き動作し続けるようにするための複数の方法を探ります。キー戦略:レプリカセット:レプリカセット:レプリカセットを使用して、データの冗長性と自動フェールオーバーを実現します。マスターノードが失敗すると、レプリカセットが自動的に新しいマスターノードを選択して、サービスの継続的な可用性を確保します。データのバックアップと回復:MongoDumpコマンドを定期的に使用してデータベースをバックアップし、データ損失のリスクに対処するために効果的な回復戦略を策定します。監視とアラーム:監視ツール(プロメテウス、グラファナなど)を展開して、MongoDBの実行ステータスをリアルタイムで監視し、

MongoDBデータベースパスワードを表示するNAVICATの方法 MongoDBデータベースパスワードを表示するNAVICATの方法 Apr 08, 2025 pm 09:39 PM

Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。

Pi Coinのメジャーアップデート:Pi Bankが来ています! Pi Coinのメジャーアップデート:Pi Bankが来ています! Mar 03, 2025 pm 06:18 PM

Pinetworkは、革新的なモバイルバンキングプラットフォームであるPibankを立ち上げようとしています! Pinetworkは本日、Pibankと呼ばれるElmahrosa(Face)Pimisrbankのメジャーアップデートをリリースしました。これは、従来の銀行サービスと、フィアット通貨の原子交換と暗号通貨の原子交換を実現します(resuptocursisを使用するなど、聖職者のような聖職者など、 DC)。ピバンクの魅力は何ですか?見つけましょう!ピバンクの主な機能:銀行口座と暗号通貨資産のワンストップ管理。リアルタイムトランザクションをサポートし、生​​物種を採用します

IFA 2024 | Core Ultra シリーズ 2: Lunar Lake で、インテルはこれまでで最も効率的な x86 CPU を導入します IFA 2024 | Core Ultra シリーズ 2: Lunar Lake で、インテルはこれまでで最も効率的な x86 CPU を導入します Sep 04, 2024 am 06:38 AM

Meteor Lake としても知られる Core Ultra シリーズ 1 の発表から約 1 年後、Intel は第 2 世代を発表しました。 Core Ultra Series 2、別名 Lunar Lake は、6 月の Computex ですでに発表されています。 IFA で Core Ultr の最終発表

See all articles