前言
前两天在学习MongoDB相关的知识,做了个小Demo,做的是省份下面有多少所学校,嗯,做的比较粗暴。。。
我们在MongoDB的官方文档中看到,MongoDb的2.4以上的For .Net的驱动是支持.Net Core 2.0的。
所以,在我们安装好了MangoDB后,就可以开始MangoDB的.Net之旅了。
方法如下:
连接MongoDB首先要通过Nuget添加一个MongoDB的包,下载此包
安装完毕后开始写代码了,创建一个省份实体,一个学校实体
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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" );
}
}
}
}
|
创建控制器
1
2
3
4
5
6
|
private readonly ProvinceContext _context = new ProvinceContext();
public async Task<IActionResult> Index()
{
var list = await _context.Province.Find(_ => true ).ToListAsync();
return View(list);
}
|
视图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
@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里
运行效果是这样的,现在还没有数据,
点击新建按钮添加省份,这里我添加了湖北省
添加省份代码如下:后端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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();
}
}
|
视图:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
@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 >
|
接下来就是添加省份下面的学校了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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));
}
|
视图:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
@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里可以看到数据
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
原文链接:http://www.cnblogs.com/lcq529/p/8398004.html