
文章插圖
| 總結(jié)/Edison Zhou
前面我們學(xué)習(xí)了MongoDB的基本查詢命令操作 , 作為后端開(kāi)發(fā)的我們大部分場(chǎng)景都是在應(yīng)用程序中和MongoDB進(jìn)行交互 , 因此本篇我們來(lái)學(xué)習(xí)一下如何在ASP.NET Core中集成MongoDB 。
1 配置MongoDB首先 , 請(qǐng)參照之前的文章安裝部署好一個(gè)MongoDB節(jié)點(diǎn)或集群 。
然后 , 手動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)BookStoreDB 和 一個(gè)集合 Books 。
use BookStoreDBdb.CreateCollection('Books')最后 , 預(yù)先插入兩條測(cè)試數(shù)據(jù):db.Books.insertMany([{'Name':'Design Patterns','Price':54.93,'Category':'Computers','Author':'Ralph Johnson', 'CreatedDate':ISODate("2012-10-02T07:58:51Z"),'UpdatedDate':ISODate("2012-10-02T07:58:51Z")}, {'Name':'Clean Code','Price':43.15,'Category':'Computers','Author':'Robert C. Martin','CreatedDate':ISODate("2012-10-02T07:58:51Z"),'UpdatedDate':ISODate("2012-10-02T07:58:51Z")}])2 配置ASP.NET Core項(xiàng)目創(chuàng)建WebAPI項(xiàng)目建立一個(gè)ASP.NET Core 或 ASP.NET 5的WebAPI項(xiàng)目 。
通過(guò)NuGet安裝MongoDB.Driver:
PM>Install-Package MongoDB.Driver目前MongoDB.Driver最新版本為2.12.4(2021年6月5日發(fā)布) 。一般來(lái)說(shuō) , 我們操作MongoDB都會(huì)選擇這個(gè)官方的Driver 。添加實(shí)體模型
在WebAPI項(xiàng)目中添加Models目錄 , 并增加 Book 實(shí)體類(lèi):
public class Book : MongoDocBase{[BsonElement("Name")]public string BookName { get; set; }public decimal Price { get; set; }public string Category { get; set; }public string Author { get; set; }}public class MongoDocBase{[BsonId][BsonRepresentation(BsonType.ObjectId)]public string Id { get; set; }[BsonDateTimeOptions(Kind = DateTimeKind.Local)]public DateTime? CreatedDate { get; set; }[BsonDateTimeOptions(Kind = DateTimeKind.Local)]public DateTime? UpdatedDate { get; set; }}需要注意的是:MongoDB存儲(chǔ)時(shí)間類(lèi)型數(shù)據(jù)時(shí) , 都是先轉(zhuǎn)換為UTC時(shí)間 , 然后存儲(chǔ)到數(shù)據(jù)庫(kù)中 。當(dāng)我們?nèi)〕龃鎯?chǔ)的時(shí)間時(shí) , 就會(huì)出現(xiàn)時(shí)差的問(wèn)題 。因此 , 一般我們會(huì)給文檔中的日期類(lèi)型加上如下所示的注解 , 將它轉(zhuǎn)換為本地時(shí)間傳輸:[BsonDateTimeOptions(Kind = DateTimeKind.Local)]在實(shí)際應(yīng)用中 , 我們會(huì)給實(shí)體類(lèi)創(chuàng)建一些DTO , 然后在應(yīng)用層進(jìn)行DTO向DO的轉(zhuǎn)換 。因此 , 這里我們假設(shè)會(huì)進(jìn)行 創(chuàng)建Book 和 修改Book 的操作 , 創(chuàng)建兩個(gè)DTO類(lèi):(1)CreateBookDto
public class CreateBookDto{public string BookName { get; set; }public decimal Price { get; set; }public string Category { get; set; }public string Author { get; set; }[JsonIgnore]public DateTime CreatedDate { get; set; } = DateTime.Now;}(2)UpdateBookDtopublic class UpdateBookDto : CreateBookDto{public string Id { get; set; }[JsonIgnore]public DateTime UpdatedDate { get; set; } = DateTime.Now;}在本示例中 , 使用AutoMapper進(jìn)行DTO和DO之間的互轉(zhuǎn) , 因此 , 安裝 AutoMapper 及其 擴(kuò)展:PM>Install-Package AutoMapperPM>Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection創(chuàng)建映射規(guī)則配置:public class MappingConfigs : Profile{public MappingConfigs(){CreateMap<CreateBookDto, Book>().ReverseMap();CreateMap<UpdateBookDto, Book>().ForMember(dest => dest.CreatedDate, opt => opt.Ignore()).ReverseMap();}}添加配置模型首先 , 在appSettings.json中添加以下數(shù)據(jù)庫(kù)配置:
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專(zhuān)業(yè)人士給予相關(guān)指導(dǎo)!
「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- mongodb是nosql數(shù)據(jù)庫(kù)嗎 4 NoSQL | MongoDB入門(mén)實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 6 NoSQL | MongoDB入門(mén)實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 7 NoSQL | MongoDB入門(mén)實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 8 NoSQL | MongoDB入門(mén)實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 9 NoSQL | MongoDB入門(mén)實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 11 NoSQL | MongoDB入門(mén)實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 12 NoSQL | MongoDB入門(mén)實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 13 NoSQL | MongoDB入門(mén)實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 14 NoSQL | MongoDB入門(mén)實(shí)戰(zhàn)教程
- 做雙眼皮有幾種方法
