热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ASP.NETCore使用MongoDB数据库

环境:Asp.NetCoreMvc2.2,MongoDB4.09参考文档:http:mongodb.github.iomongo-csharp-driverhttp:mongodb

环境:Asp.Net Core Mvc 2.2,MongoDB 4.09

参考文档:http://mongodb.github.io/mongo-csharp-driver/    http://mongodb.github.io/mongo-csharp-driver/2.8/    

https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-mongo-app?view=aspnetcore-2.2&tabs=visual-studio

创建 ASP.NET Core Mvc 项目

添加models,添加services

        基本的结构就这样了

在models和services项目中安装NuGet依赖库:MongoDB.Driver    。 我安装的最新版:2.8.1版本

Install-Package MongoDB.Driver -Version {VERSION}

添加实体模型类,添加对应的service操作类

 

BaseModel:

using System;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;

namespace MongoDBDemo.Models
{
    public class BaseModel
    {
        [BsonId]        //标记主键
        [BsonRepresentation(BsonType.ObjectId)]     //参数类型  , 无需赋值
        public string Id { get; set; }

        [BsonElement(nameof(CreateDateTime))]   //指明数据库中字段名为CreateDateTime
        public DateTime CreateDateTime { get; set; }

        //[BsonElement(nameof(IsDelete))]
        public bool IsDelete { get; set; }

        public BaseModel()
        {
            CreateDateTime = DateTime.Now;
            IsDelete = false;
        }
    }
}

Student:

namespace MongoDBDemo.Models
{
    public class Student : BaseModel
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
}

 

BaseService:

using Microsoft.Extensions.Configuration;
using MongoDB.Driver;
using MongoDBDemo.Models;
using System.Collections.Generic;

namespace MongoDBDemo.Services
{
    public class BaseService where T : BaseModel
    {
        private readonly IMongoCollection _collection;   //数据表操作对象

        /// 
        /// 构造函数
        /// 
        /// 
        /// 表名
        public BaseService(IConfiguration config, string tableName)
        {
            var client = new MongoClient(config.GetConnectionString("MongoDBDemo"));    //获取链接字符串

            var database = client.GetDatabase(config.GetSection("MongoDBSetting:DBName").Value);   //数据库名 (不存在自动创建)

            //获取对特定数据表集合中的数据的访问
            _collection = database.GetCollection(tableName);     // (不存在自动创建)
        }
        
        //Find – 返回集合中与提供的搜索条件匹配的所有文档。
        //InsertOne – 插入提供的对象作为集合中的新文档。
        //ReplaceOne – 将与提供的搜索条件匹配的单个文档替换为提供的对象。
        //DeleteOne – 删除与提供的搜索条件匹配的单个文档。

        /// 
        /// 获取所有
        /// 
        /// 
        public List Get()
        {
            return _collection.Find(T => true).ToList();
        }

        /// 
        /// 获取单个
        /// 
        /// 
        /// 
        public T Get(string id)
        {
            return _collection.Find(T => T.Id == id).FirstOrDefault();
        }

        /// 
        /// 创建
        /// 
        /// 
        /// 
        public T Create(T T)
        {
            _collection.InsertOne(T);
            return T;
        }

        /// 
        /// 更新
        /// 
        /// 
        /// 
        public void Update(string id, T TIn)
        {
            _collection.ReplaceOne(T => T.Id == id, TIn);
        }

        /// 
        /// 删除
        /// 
        /// 
        public void Remove(T TIn)
        {
            _collection.DeleteOne(T => T.Id == TIn.Id);
        }

        /// 
        /// 根据id删除
        /// 
        /// 
        public void Remove(string id)
        {
            _collection.DeleteOne(T => T.Id == id);
        }
    }
}

StudentService:

using Microsoft.Extensions.Configuration;
using MongoDBDemo.Models;

namespace MongoDBDemo.Services
{
    public class StudentService : BaseService
    {
        public StudentService(IConfiguration config) : base(config, nameof(Student))
        {

        }
    }
}

 

配置文件 appsettings.json 加入

"ConnectionStrings": {
    "MongoDBDemo": "mongodb://localhost:27017" //连接字符串
  },
  "MongoDBSetting": {
    "DBName": "Test"
  },

ASP.NET Core使用MongoDB数据库

 

上层写好后,需在Web层Startup类中配置注入service注入以便在控制中使用service操作mongodb

 services.AddScoped();       //注入service服务

ASP.NET Core使用MongoDB数据库

 

注入service后在控制器试一下好不好使,运行项目后是好使的

ASP.NET Core使用MongoDB数据库

 

HomeController控制器代码:

    public class HomeController : Controller
    {
        private readonly StudentService _studentService;
        public HomeController(StudentService studentService)                //构造函数注入
        {
            _studentService = studentService;
        }

        public IActionResult Index()
        {
            return View();
        }

        #region CRUD

        /// 
        /// 获取所有
        /// 
        /// 
        public ActionResult> Get()
        {
            return _studentService.Get();
        }

        /// 
        /// 根据id获取
        /// 
        /// 
        /// 
        [HttpGet("{id}")]
        public ActionResult Get(string id)
        {
            var Student = _studentService.Get(id);
            if (Student == null)
            {
                return NotFound();
            }
            return Student;
        }

        /// 
        ///添加
        /// 
        /// 
        /// 
        public ActionResult Create(Student Student)
        {
            _studentService.Create(Student);
            return Ok();
        }

        /// 
        /// 更新
        /// 
        /// 
        /// 
        /// 
        public IActionResult Update(string id, Student StudentIn)
        {
            var Student = _studentService.Get(id);

            if (Student == null)
            {
                return NotFound();
            }
            _studentService.Update(id, StudentIn);
            return NoContent();
        }

        /// 
        /// 删除
        /// 
        /// 
        /// 
        public IActionResult Delete(string id)
        {
            var Student = _studentService.Get(id);

            if (Student == null)
            {
                return NotFound();
            }
            _studentService.Remove(Student.Id);
            return NoContent();
        }
        #endregion


        public IActionResult Privacy()
        {
            return View();
        }

        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }

 

试一下添加删除,都是好使的:

ASP.NET Core使用MongoDB数据库ASP.NET Core使用MongoDB数据库

 

 

 

 

 

 

完结。参考文档:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-mongo-app?view=aspnetcore-2.2&tabs=visual-studio

 


推荐阅读
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • 本文介绍了.hbs文件作为Ember.js项目中的视图层,类似于HTML文件的功能,并详细讲解了如何在Ember.js应用中集成Bootstrap框架及其相关组件的方法。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 本文探讨了如何将个人经历,特别是非传统的职业路径,转化为职业生涯中的优势。通过作者的亲身经历,展示了舞蹈生涯对商业思维的影响。 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 回顾两年前春节期间的一个个人项目,该项目原本计划参加竞赛,但最终作为练习项目完成。独自完成了从编码到UI设计的全部工作,尽管代码量不大,但仍有一定的参考价值。本文将详细介绍该项目的背景、功能及技术实现。 ... [详细]
author-avatar
Belief
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有