ASP.NET Core使用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/
创建 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<T> where T : BaseModel
{
private readonly IMongoCollection<T> _collection; //数据表操作对象 /// <summary>
/// 构造函数
/// </summary>
/// <param name="config"></param>
/// <param name="tableName">表名</param>
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<T>(tableName); // (不存在自动创建)
} //Find<T> – 返回集合中与提供的搜索条件匹配的所有文档。
//InsertOne – 插入提供的对象作为集合中的新文档。
//ReplaceOne – 将与提供的搜索条件匹配的单个文档替换为提供的对象。
//DeleteOne – 删除与提供的搜索条件匹配的单个文档。 /// <summary>
/// 获取所有
/// </summary>
/// <returns></returns>
public List<T> Get()
{
return _collection.Find(T => true).ToList();
} /// <summary>
/// 获取单个
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public T Get(string id)
{
return _collection.Find<T>(T => T.Id == id).FirstOrDefault();
} /// <summary>
/// 创建
/// </summary>
/// <param name="T"></param>
/// <returns></returns>
public T Create(T T)
{
_collection.InsertOne(T);
return T;
} /// <summary>
/// 更新
/// </summary>
/// <param name="id"></param>
/// <param name="TIn"></param>
public void Update(string id, T TIn)
{
_collection.ReplaceOne(T => T.Id == id, TIn);
} /// <summary>
/// 删除
/// </summary>
/// <param name="TIn"></param>
public void Remove(T TIn)
{
_collection.DeleteOne(T => T.Id == TIn.Id);
} /// <summary>
/// 根据id删除
/// </summary>
/// <param name="id"></param>
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<Student>
{
public StudentService(IConfiguration config) : base(config, nameof(Student))
{ }
}
}
配置文件 appsettings.json 加入
"ConnectionStrings": {
"MongoDBDemo": "mongodb://localhost:27017" //连接字符串
},
"MongoDBSetting": {
"DBName": "Test"
},

上层写好后,需在Web层Startup类中配置注入service注入以便在控制中使用service操作mongodb
services.AddScoped<StudentService>(); //注入service服务

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

HomeController控制器代码:
public class HomeController : Controller
{
private readonly StudentService _studentService;
public HomeController(StudentService studentService) //构造函数注入
{
_studentService = studentService;
} public IActionResult Index()
{
return View();
} #region CRUD /// <summary>
/// 获取所有
/// </summary>
/// <returns></returns>
public ActionResult<List<Student>> Get()
{
return _studentService.Get();
} /// <summary>
/// 根据id获取
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id}")]
public ActionResult<Student> Get(string id)
{
var Student = _studentService.Get(id);
if (Student == null)
{
return NotFound();
}
return Student;
} /// <summary>
///添加
/// </summary>
/// <param name="Student"></param>
/// <returns></returns>
public ActionResult<Student> Create(Student Student)
{
_studentService.Create(Student);
return Ok();
} /// <summary>
/// 更新
/// </summary>
/// <param name="id"></param>
/// <param name="StudentIn"></param>
/// <returns></returns>
public IActionResult Update(string id, Student StudentIn)
{
var Student = _studentService.Get(id); if (Student == null)
{
return NotFound();
}
_studentService.Update(id, StudentIn);
return NoContent();
} /// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
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 = , 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
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.前言及MongoDB的介绍 最近在整合自己的框架,顺便把MongoDBD的最简单CRUD重构一下作为组件化集成到asp.net ...
- Asp.Net Core Use MongoDB
前几天在网上想找一下Asp.Net Core使用MongoDB相关的文章,也看了几篇,发现都是在写简单的例子,这样的例子是不能用在生产环境的,不能用的生产环境的.封装一个东西一定是建立在你对这个东西足 ...
- ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core
前言 原本本节内容是不存在的,出于有几个人问到了我:我想使用ASP.NET Core Identity,但是我又不想使用默认生成的数据库表,想自定义一套,我想要使用ASP.NE Core Identi ...
- Asp.Net Core 使用 Sqlite 数据库
在Asp.Net Core 使用 Sqlite 数据库 在Asp.Net Core(5.0)项目中使用Sqlite数据库的设置, 1,创建新web项目 2,安装下面的依赖包 Install-Packa ...
- Asp.Net Core链接Mysql数据库
一.新建一个Asp.Net Core WebMVC程序 添加nuget包 Mysql.Data 二.新建一个UserContext类 下面代码中的UserInfo是我自己建的一个实体,里面有俩字段: ...
- (18)ASP.NET Core 基于现有数据库创建EF模型(反向工程)
1.简介 Entity Framework Core可通过数据库提供给应用程序的插件访问许多不同的数据库.我们可以通过使用Entity Framework Core构建执行基本数据访问的ASP.NET ...
- Asp.Net Core Identity 多数据库支持
Asp.Net Core Identity 是.Net自带的身份认证系统,支持用户界面 (UI) 登录功能,并且管理用户.密码.配置文件数据.角色.声明.令牌.电子邮件确认等等.使用Visual St ...
- Asp.Net Core使用MongoDB
MongoDB 是一个基于分布式且面向文档存储的开源 NoSql数据库系统 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.它支持的数据结构 ...
- Asp.Net Core如何根据数据库自动生成实体类
通过引用Nuget包添加实体类 运行 Install-Package Microsoft.EntityFrameworkCore.SqlServer 运行 Install-Package Micros ...
随机推荐
- 史上最全的Spring Boot Cache使用与整合
一:Spring缓存抽象# Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接 ...
- pandas 之 时间序列索引
import numpy as np import pandas as pd 引入 A basic kind of time series object in pandas is a Series i ...
- JDBC学习笔记二
JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...
- Mybatis-plus使用分页进行分页查询
首先先配置配置文件 @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginat ...
- 接口测试 从 0 到 1,用 Jmeter 搭建 HTTP 接口自动化引擎 1.0 版本
百度网盘地址更新:https://pan.baidu.com/s/13S0WStZpwlbL15IBp_Q-bg 1.已实现功能描述 1.1 框架包含:Jenkins.Ant.Jmeter 1.2 测 ...
- 20180711模拟赛T3——聚变
文件名: fusion 题目类型: 传统题 时间限制: 3秒 内存限制: 256MB 编译优化: 无 题目描述 知名科学家小A在2118年在计算机上实现了模拟聚变的过程. 我们将她研究的过程简化. 核 ...
- day17_7.19包与logging模块,深浅拷贝
一.包 在模块的定义里,模块就是方法的集合,可以将一些常用的方法封装到一个py文件中,通过调用使用,而且,其中的表现形式也有以包的形式导入. 其实,包就是一系列模块的结合体,表示形式就是一个文件夹,在 ...
- 莫烦TensorFlow_11 MNIST优化使用CNN
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #number 1 to 10 d ...
- 快速安装Rainbond——开源企业级Paas平台
快速安装Rainbond--开源企业级Paas平台 参考:https://www.rainbond.com/docs/user-operations/install/online_install/ R ...
- Docker容器数据卷(七)
Docker致力于: 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 容器之间希望有可能共享数据 Docker容器产生的数据,如果不通过docker co ...
