作者:手机用户2602934117 | 来源:互联网 | 2023-09-14 11:52
.netCore连接MongoDB数据库的步骤详解是千自学中一篇关于MongoDB的文章简介:前言前两天在学习MongoDB相关的知识,做了个小Demo,做的是省份下面有多少所学校,嗯,做的比较粗暴。。。我们在MongoDB的官方文档中看到,MongoDb的2.4以上的For.Net
前言
前两天在学习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; }
///
/// 省份里有多个学校 这里用集合保存
///
public IList 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
{
get
{
return _database.GetCollection("Province");
}
}
}
}
创建控制器
private readonly ProvinceContext _cOntext= new ProvinceContext();
public async Task Index()
{
var list = await _context.Province.Find(_ => true).ToListAsync();
return View(list);
}
视图
@model List
@{
ViewData["Title"] = "Index";
}
Index
Index
省份ID
省份名称
操作
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.ProvinceID)
@Html.DisplayFor(modelItem => item.ProvinceName)
新 增
详 情
删 除
}
运行的时候修改配置在Startup.cs里
运行效果是这样的,现在还没有数据,
点击新建按钮添加省份,这里我添加了湖北省
添加省份代码如下:后端
public IActionResult Create()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Create(Province item)
{
try
{
//初始化学校类型数据
item.SchoolName = new List();
await _context.Province.InsertOneAsync(item);
return RedirectToAction(nameof(Index));
}
catch
{
return View();
}
}
视图:
@model MongoCore.Models.Province
@{
ViewData["Title"] = "Create";
}
Create
接下来就是添加省份下面的学校了
public async Task Insert(int ProvinceID)
{
var num = await _context.Province.Find(p => p.ProvinceID == ProvinceID).SingleOrDefaultAsync();
return View(num);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task 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";
}
新增
然后添加学校,我添加了两所学校,在MongoDB里可以看到数据
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
推荐阅读
本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ...
[详细]
蜡笔小新 2024-11-11 14:44:47
DVWA学习笔记系列:深入理解CSRF攻击机制 ...
[详细]
蜡笔小新 2024-11-11 13:19:51
本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ...
[详细]
蜡笔小新 2024-11-11 10:58:21
深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ...
[详细]
蜡笔小新 2024-11-09 19:04:36
在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ...
[详细]
蜡笔小新 2024-11-09 16:33:02
本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ...
[详细]
蜡笔小新 2024-11-09 09:28:55
在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ...
[详细]
蜡笔小新 2024-11-11 15:34:22
在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ...
[详细]
蜡笔小新 2024-11-11 14:49:31
属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ...
[详细]
蜡笔小新 2024-11-11 13:55:43
Unity与MySQL连接过程中出现的新挑战及解决方案探析 ...
[详细]
蜡笔小新 2024-11-11 09:55:19
Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ...
[详细]
蜡笔小新 2024-11-09 21:38:05
本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ...
[详细]
蜡笔小新 2024-11-09 19:48:22
使用 ListView 浏览安卓系统中的回收站文件 ...
[详细]
蜡笔小新 2024-11-09 16:34:55
本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ...
[详细]
蜡笔小新 2024-11-08 19:12:49
在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ...
[详细]
蜡笔小新 2024-11-08 18:43:17
手机用户2602934117
这个家伙很懒,什么也没留下!