.net Core连接MongoDB数据库的步骤详解
程序员文章站
2022-08-27 22:30:41
前言
前两天在学习mongodb相关的知识,做了个小demo,做的是省份下面有多少所学校,嗯,做的比较粗暴。。。
我们在mongodb的官方文档中看到,mongodb的...
前言
前两天在学习mongodb相关的知识,做了个小demo,做的是省份下面有多少所学校,嗯,做的比较粗暴。。。
我们在mongodb的官方文档中看到,mongodb的2.4以上的for .net的驱动是支持.net core 2.0的。
所以,在我们安装好了mangodb后,就可以开始mangodb的.net之旅了。
方法如下:
连接mongodb首先要通过nuget添加一个mongodb的包,下载此包
安装完毕后开始写代码了,创建一个省份实体,一个学校实体
using mongodb.bson.serialization.attributes;using system.collections.generic; namespace mongocore.models { public class province { [bsonid] public int provinceid { get; set; } public string provincename { get; set; } /// <summary> /// 省份里有多个学校 这里用集合保存 /// </summary> public ilist<school> schoolname { get; set; } } } namespace mongocore.models { //用于后面添加学校 public school(string schoolname, string years) { schoolname = schoolname; years = years; } public class school { public string schoolname { get; set; } public string years { get; set; } } }
创建上下文类,连接mongodb
namespace mongocore.models { public class provincecontext { //定义数据库 private readonly imongodatabase _database = null; public provincecontext() { //连接服务器名称 mongo的默认端口27017 var client = new mongoclient("mongodb://.......:27017"); if (client != null) //连接数据库 _database = client.getdatabase("数据库名"); } public imongocollection<province> province { get { return _database.getcollection<province>("province"); } } } }
创建控制器
private readonly provincecontext _context = new provincecontext(); public async task<iactionresult> index() { var list = await _context.province.find(_ => true).tolistasync(); return view(list); }
视图
@model list<mongocore.models.province> @{ viewdata["title"] = "index"; } <h2>index</h2> <h2>index</h2> <a asp-action="create"><input type="button" value="新 建" class="btn btn-default" /></a> <table class="table"> <tr> <th>省份id</th> <th>省份名称</th> <th>操作</th> </tr> @foreach (var item in model) { <tr> <td> @html.displayfor(modelitem => item.provinceid) </td> <td> @html.displayfor(modelitem => item.provincename) </td> <td> <a asp-action="insert" asp-route-provinceid="@item.provinceid">新 增</a> <a asp-action="detail" asp-route-provinceid="@item.provinceid">详 情</a> <a asp-action="delete" asp-route-provinceid="@item.provinceid">删 除</a> </td> </tr> } </table>
运行的时候修改配置在startup.cs里
运行效果是这样的,现在还没有数据,
点击新建按钮添加省份,这里我添加了湖北省
添加省份代码如下:后端
public iactionresult create() { return view(); } [httppost] [validateantiforgerytoken] public async task<actionresult> create(province item) { try { //初始化学校类型数据 item.schoolname = new list<school>(); await _context.province.insertoneasync(item); return redirecttoaction(nameof(index)); } catch { return view(); } }
视图:
@model mongocore.models.province @{ viewdata["title"] = "create"; } <h2>create</h2> <div class="row"> <div class="col-md-4"> <form asp-action="create"> <div asp-validation-summary="modelonly" class="text-danger"></div> <div class="form-group"> <label class="control-label">省份id</label> <input asp-for="provinceid" class="form-control" /> </div> <div class="form-group"> <label class="control-label">省份名称</label> <input asp-for="provincename" class="form-control" /> </div> <div class="form-group"> <input type="submit" value="保 存" class="btn btn-default" /> </div> </form> </div> </div>
接下来就是添加省份下面的学校了
public async task<iactionresult> insert(int provinceid) { var num = await _context.province.find(p => p.provinceid == provinceid).singleordefaultasync(); return view(num); } [httppost] [validateantiforgerytoken] public async task<iactionresult> insert(int provinceid, string years, string schoolname) { var item = await _context.province.find(p => p.provinceid == provinceid).singleordefaultasync(); school sl = new school(schoolname,years); //添加学校 item.schoolname.add(sl); //更新 replaceoneresult actionresult = await _context.province .replaceoneasync(n => n.provinceid.equals(provinceid) , item , new updateoptions { isupsert = true }); return redirecttoaction(nameof(index)); }
视图:
@model mongocore.models.province @{ viewdata["title"] = "insert"; } <h2>新增</h2> <div class="row"> <div class="col-md-4"> <form asp-action="insert"> <div asp-validation-summary="modelonly" class="text-danger"></div> <input type="hidden" asp-for="provinceid" /> <div class="form-group"> <label class="control-label">学校名称</label> <input name="schoolname" class="form-control" /> </div> <div class="form-group"> <label class="control-label">成立年份</label> <input name="years" class="form-control" /> </div> <div class="form-group"> <input type="submit" value="保 存" class="btn btn-default" /> </div> </form> </div> </div>
然后添加学校,我添加了两所学校,在mongodb里可以看到数据
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
上一篇: PHP面向对象类型约束用法分析
下一篇: JS设计模式之状态模式概念与用法分析
推荐阅读
-
Linux下部署.net core环境的步骤详解
-
.NET Core 获取数据库上下文实例的方法和配置连接字符串
-
Linux下部署.net core环境的步骤详解
-
Spring引入外部属性文件配置数据库连接的步骤详解
-
为什么ASP.NET Core 数据库连接串的值和appsettings.json配的不一样?
-
为什么ASP.NET Core 数据库连接串的值和appsettings.json配的不一样?
-
asp.net core集成MongoDB的完整步骤
-
.net Core连接MongoDB数据库的步骤详解
-
Asp.Net Core中创建多DbContext并迁移到数据库的步骤
-
.NET Core 获取数据库上下文实例的方法和配置连接字符串