前两天在学习MongoDB相关的知识,做了个小Demo,做的是省份下面有多少所学校,嗯,做的比较粗暴。。。

连接MongoDB首先要通过Nuget添加一个MongoDB的包,下载此包

安装完毕后开始写代码了,创建一个省份实体,一个学校实体

  1. using MongoDB.Bson.Serialization.Attributes;
    using System.Collections.Generic;
  2. namespace MongoCore.Models
  3. {
  4. public class Province
  5. {
  6. [BsonId]
  7. public int ProvinceID { get; set; }
  8.  
  9. public string ProvinceName { get; set; }
  10. /// <summary>
  11. /// 省份里有多个学校 这里用集合保存
  12. /// </summary>
  13. public IList<School> SchoolName { get; set; }
  14. }
  15. }
  16.  
  17. namespace MongoCore.Models
  18. {
    //用于后面添加学校
     public School(string schoolName, string years)
            {
                SchoolName = schoolName;
                Years = years;
            }
  19. public class School
  20. {
  21. public string SchoolName { get; set; }
  22. public string Years { get; set; }
  23. }
  24. }

创建上下文类,连接MongoDB

  1. namespace MongoCore.Models
  2. {
  3. public class ProvinceContext
  4. {
  5. //定义数据库
  6. private readonly IMongoDatabase _database = null;
  7.  
  8. public ProvinceContext()
  9. {
  10. //连接服务器名称 mongo的默认端口27017
  11. var client = new MongoClient("mongodb://.......:27017");
  12. if (client != null)
  13. //连接数据库
  14. _database = client.GetDatabase("数据库名");
  15. }
  16.  
  17. public IMongoCollection<Province> Province
  18. {
  19. get
  20. {
  21. return _database.GetCollection<Province>("Province");
  22. }
  23. }
  24. }
  25. }

创建控制器

  1. private readonly ProvinceContext _context = new ProvinceContext();
  2. public async Task<IActionResult> Index()
  3. {
  4. var list = await _context.Province.Find(_ => true).ToListAsync();
  5. return View(list);
  6. }

视图

  1. @model List<MongoCore.Models.Province>
  2. @{
  3. ViewData["Title"] = "Index";
  4. }
  5.  
  6. <h2>Index</h2>
  7. <h2>Index</h2>
  8. <a asp-action="Create"><input type="button" value="新 建" class="btn btn-default" /></a>
  9. <table class="table">
  10. <tr>
  11. <th>省份ID</th>
  12. <th>省份名称</th>
  13. <th>操作</th>
  14. </tr>
  15. @foreach (var item in Model)
  16. {
  17. <tr>
  18. <td>
  19. @Html.DisplayFor(modelItem => item.ProvinceID)
  20. </td>
  21. <td>
  22. @Html.DisplayFor(modelItem => item.ProvinceName)
  23. </td>
  24. <td>
  25. <a asp-action="Insert" asp-route-ProvinceID="@item.ProvinceID">新 增</a>&nbsp;&nbsp;
  26. <a asp-action="Detail" asp-route-ProvinceID="@item.ProvinceID">详 情</a>&nbsp;&nbsp;
  27. <a asp-action="Delete" asp-route-ProvinceID="@item.ProvinceID">删 除</a>&nbsp;&nbsp;
  28. </td>
  29. </tr>
  30. }
  31. </table>

运行的时候修改配置在Startup.cs里

运行效果是这样的,现在还没有数据,

点击新建按钮添加省份,这里我添加了湖北省

添加省份代码如下:后端

  1. public IActionResult Create()
  2. {
  3. return View();
  4. }
  5. [HttpPost]
  6. [ValidateAntiForgeryToken]
  7. public async Task<ActionResult> Create(Province item)
  8. {
  9. try
  10. {
  11.  
  12. //初始化学校类型数据
  13. item.SchoolName = new List<School>();
  14.  
  15. await _context.Province.InsertOneAsync(item);
  16. return RedirectToAction(nameof(Index));
  17. }
  18. catch
  19. {
  20. return View();
  21. }
  22. }

视图:

  1. @model MongoCore.Models.Province
  2. @{
  3. ViewData["Title"] = "Create";
  4. }
  5.  
  6. <h2>Create</h2>
  7. <div class="row">
  8. <div class="col-md-4">
  9. <form asp-action="Create">
  10. <div asp-validation-summary="ModelOnly" class="text-danger"></div>
  11. <div class="form-group">
  12. <label class="control-label">省份ID</label>
  13. <input asp-for="ProvinceID" class="form-control" />
  14. </div>
  15. <div class="form-group">
  16. <label class="control-label">省份名称</label>
  17. <input asp-for="ProvinceName" class="form-control" />
  18. </div>
  19. <div class="form-group">
  20. <input type="submit" value="保 存" class="btn btn-default" />
  21. </div>
  22. </form>
  23. </div>
  24. </div>

接下来就是添加省份下面的学校了

  1. public async Task<IActionResult> Insert(int ProvinceID)
  2. {
  3. var num = await _context.Province.Find(p => p.ProvinceID == ProvinceID).SingleOrDefaultAsync();
  4. return View(num);
  5. }
  6.  
  7. [HttpPost]
  8. [ValidateAntiForgeryToken]
  9. public async Task<IActionResult> Insert(int ProvinceID, string Years, string SchoolName)
  10. {
  11. var item = await _context.Province.Find(p => p.ProvinceID == ProvinceID).SingleOrDefaultAsync();
  12. School sl = new School(SchoolName,Years);
  13. //添加学校
  14. item.SchoolName.Add(sl);
  15. //更新
  16. ReplaceOneResult actionResult
  17. = await _context.Province
  18. .ReplaceOneAsync(n => n.ProvinceID.Equals(ProvinceID)
  19. , item
  20. , new UpdateOptions { IsUpsert = true });
  21. return RedirectToAction(nameof(Index));
  22. }

视图:

  1. @model MongoCore.Models.Province
  2. @{
  3. ViewData["Title"] = "Insert";
  4. }
  5. <h2>新增</h2>
  6. <div class="row">
  7. <div class="col-md-4">
  8. <form asp-action="Insert">
  9. <div asp-validation-summary="ModelOnly" class="text-danger"></div>
  10. <input type="hidden" asp-for="ProvinceID" />
  11. <div class="form-group">
  12. <label class="control-label">学校名称</label>
  13. <input name="SchoolName" class="form-control" />
  14. </div>
  15. <div class="form-group">
  16. <label class="control-label">成立年份</label>
  17. <input name="Years" class="form-control" />
  18. </div>
  19. <div class="form-group">
  20. <input type="submit" value="保 存" class="btn btn-default" />
  21. </div>
  22. </form>
  23. </div>
  24. </div>

然后添加学校,我添加了两所学校,在MongoDB里可以看到数据

.net Core连接MongoDB的更多相关文章

  1. java连接mongodb的一个奇葩问题及奇葩解决方式

    昨天在eclipse中编写代码,本来连接mongodb进行各项操作都是正常的,但是有一会儿突然之间就没法连接了,还一直抱错,错误如下: 信息: Cluster created with setting ...

  2. asp.net core集成MongoDB

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.前言及MongoDB的介绍 最近在整合自己的框架,顺便把MongoDBD的最简单CRUD重构一下作为组件化集成到asp.net ...

  3. springboot连接mongodb进行CRUD

    springboot连接mongodb进行CRUD的过程: 在执行以下操作前已安装了mongodb并创建了用户和数据库,使用Robo 3T可成功连接. 1.创建springboot项目,加入以下mav ...

  4. nodejs连接mongodb的方法

    一. var express = require('express'); var mongodb = require('mongodb'); var app = express(); app.use( ...

  5. Nodejs开发(2.连接MongoDB)

    一.先配置MongoDB Win10下下载那个安装版,zip版的会报却各种DLL,安装在你希望的路径,实在安装错了,就剪切过来也行(本例E:\mongodb). 然后是配置启动脚本,就是写一个bat文 ...

  6. 在express中使用Mongoose连接MongoDB

    为何要学Mongoose? Mongoose是MongoDB的一个对象模型工具,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单. 0.安装 ...

  7. Java 连接MongoDB

    1.驱动 通过java连接MongoDB需要一个java版的驱动 下载地址:http://mongodb.github.io/mongo-java-driver/ 2.连接MongoDB 通过 com ...

  8. 远程连接mongodb出现 no route to host 和 Connection refused

    部署好mongodb服务器后,在客户端安装好php的mongodb扩展,用程序连接mongodb服务器出错:no route to host.搜索了差不多一天的时候都没有相关的解决方法.最后在mong ...

  9. NOSQL Mongo入门学习笔记 - C++连接Mongodb(三)

    OS环境: Centos 7.1 release X86_64 编译环境: G++ 4.8.3 已经成功搭建好了Mongodb,也初步在命令行中的查询与写入数据的基本方法,现在通过C++来连接Mong ...

随机推荐

  1. windows 异常处理

    为了程序的健壮性,windows 中提供了异常处理机制,称为结构化异常,异常一般分为硬件异常和软件异常,硬件异常一般是指在执行机器指令时发生的异常,比如试图向一个拥有只读保护的页面写入内容,或者是硬件 ...

  2. 【读书笔记】【深入理解ES6】#13-用模块封装代码

    什么是模块 模块是自动运行在严格模式下并且没有办法退出运行的 JavaScript 代码. 在模块顶部创建的变量不会自动被添加到全局变量作用域,这个变量仅在模块的顶级作用域中存在,而且模块必须导出一些 ...

  3. SQL 语句优化方法

    尽量避免非操作符的使用,在索引上使用 NOT,<> 等操作符,数据库管理系统是不会使用索引的,可以将查询语句转化为可以使用索引的查询. 避免对查询的列的操作,任何对列的操作都可能导致全表扫 ...

  4. jq交叉轮播图变种【闪一下黑】

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 【Java】CAS的乐观锁实现之AtomicInteger源码分析

    1. 悲观锁与乐观锁 我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时间片之间,需要进行cpu切换,也就是会发生进程的切换.切换涉及 ...

  6. 视觉slam十四讲习题ch3-6

    题目回顾: 一般解线性方程Ax=b有哪几种做法?你能在Eigen中实现吗? 解: 线性方程组Ax = b的解法 : 1.直接法:(1,2,3,4,5) 2.迭代法:如Jacobi迭代法(6) 其中只有 ...

  7. Java入门篇(二)——Java语言基础(下)

    上篇说到Java中的变量与常量,接下来就是简单的计算了,首先需要了解一下Java中的运算符. 六.运算符 1. 赋值运算符 赋值运算符即"=",是一个二元运算符(即对两个操作数进行 ...

  8. 在虚拟机中安装metasploit官方攻防模拟器

    首先我们要在windwos下载安装perl环境.下载地址: http://pan.baidu.com/s/1i3GLKAp 然后我们安装 点击next 我同意,next next next,然后他会安 ...

  9. BC#65 T5 ZYB's Prime

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5594 完全不会啊TAT.. 其实官方题解已经说的很清楚了.. #include <cstdio> ...

  10. Proxy 那点事儿

    ---恢复内容开始--- 尊重原创:https://my.oschina.net/huangyong/blog/159788 Proxy,也就是"代理"了.意思就是,你不用去做,别 ...