Asp.net Core1.1创建简单WebAPI对Mongodb进行CRUD操作
1.使用VS2017建立一个.netcore1.1的WebAPI项目
选择webAPI模板
2.添加mongodb驱动
工具——NuGet包管理器——程序包管理控制台:
Install-Package MongoDB.Driver
3.创建对应的接口已经实现类
1.创建mongodb操作帮助类
![](/assets/blank.gif)
![](/assets/blank.gif)
1 public class MongoHelper 2 { 3 private static readonly IMongoCollection<UserItem> _mycol; 4 5 static MongoHelper() 6 { 7 string connectString = "mongodb://127.0.0.1:27017"; 8 string dataBaseName = "test"; 9 string collectionName = "mycol"; 10 MongoClient mc = new MongoClient(connectString); 11 _mycol = mc.GetDatabase(dataBaseName).GetCollection<UserItem>(collectionName); 12 } 13 14 15 public static void InsertData(UserItem DataS) 16 { 17 _mycol.InsertOne(DataS); 18 } 19 20 public static bool DeleteData(ObjectId objectId) 21 { 22 var filter = Builders<UserItem>.Filter.Eq("_id", objectId); 23 var result = _mycol.DeleteOne(filter); 24 return result.IsAcknowledged; 25 } 26 27 public static bool UpdateData(UserItem updataDs) 28 { 29 var filter = Builders<UserItem>.Filter.Eq("_id", updataDs._id); 30 var result = _mycol.ReplaceOne(filter, updataDs); 31 return result.IsAcknowledged; 32 } 33 34 public static UserItem SearchData(ObjectId objectId) 35 { 36 var filter = Builders<UserItem>.Filter.Eq("_id", objectId); 37 var result = _mycol.Find(filter); 38 return result.FirstOrDefault(); 39 } 40 41 public static List<UserItem> GetAllData() 42 { 43 return _mycol.AsQueryable().ToList(); 44 } 45 }
View Code
这里需要在linux主机上建立mongodb服务
因为Mongodb帮助类中需要操作文档模型的对象,这里需要在项目中添加一个文件夹Models,添加一个类UserItem,具体内容如下
![](/assets/blank.gif)
![](/assets/blank.gif)
1 namespace MongodbCRUD.Models 2 { 3 public class UserItem 4 { 5 [JsonConverter(typeof(ObjectIdConverter))] 6 public ObjectId _id { get; set; } 7 public string CompanyName { get; set; } 8 public string ContactName { get; set; } 9 public string Phone { get; set; } 10 } 11 class ObjectIdConverter : JsonConverter 12 { 13 14 public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 15 { 16 serializer.Serialize(writer, value.ToString()); 17 18 } 19 20 public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 21 { 22 if (reader.TokenType != JsonToken.String) 23 { 24 throw new Exception($"Unexpected token parsing ObjectId. Expected String.get{reader.TokenType}"); 25 } 26 var value = (string)reader.Value; 27 return string.IsNullOrEmpty(value) ? ObjectId.Empty : ObjectId.Parse(value); 28 } 29 30 public override bool CanConvert(Type objectType) 31 { 32 return typeof(ObjectId).IsAssignableFrom(objectType); 33 } 34 35 36 } 37 }
View Code
其中添加JsonConverter特性是为了解决mongodb的objectid类型属性转换的问题
2.创建数据库操作接口以及实现类
![](/assets/blank.gif)
![](/assets/blank.gif)
1 public interface IUserRepository 2 { 3 void Create(UserItem jsString); 4 bool Update(UserItem jsString); 5 bool Delete(string id); 6 List<UserItem> GetAll(); 7 UserItem FindOneById(string id); 8 }
View Code
![](/assets/blank.gif)
![](/assets/blank.gif)
1 public void Create(UserItem jsString) 2 { 3 MongoHelper.InsertData(jsString); 4 } 5 6 public bool Delete(string id) 7 { 8 return MongoHelper.DeleteData(ObjectId.Parse(id)); 9 } 10 11 public UserItem FindOneById(string id) 12 { 13 return MongoHelper.SearchData(ObjectId.Parse(id)); 14 } 15 16 public List<UserItem> GetAll() 17 { 18 return MongoHelper.GetAllData(); 19 } 20 21 public bool Update(UserItem jsString) 22 { 23 return MongoHelper.UpdateData(jsString); 24 }
View Code
添加一个控制器类:UserController
![](/assets/blank.gif)
![](/assets/blank.gif)
1 [Route("api/[controller]")] 2 public class UserController : Controller 3 { 4 5 public IUserRepository UserItems { get; set; } 6 7 public UserController(IUserRepository userItems) 8 { 9 UserItems = userItems; 10 } 11 12 public IActionResult GetAll() 13 { 14 return new ObjectResult(MongoHelper.GetAllData()); 15 } 16 17 [HttpGet("{id}")] 18 public IActionResult GetById(string id) 19 { 20 21 return new ObjectResult(UserItems.FindOneById(id)); 22 } 23 24 [HttpPost] 25 public void Create([FromBody]UserItem item) 26 { 27 UserItems.Create(item); 28 } 29 30 [HttpPut] 31 public IActionResult Update([FromBody] UserItem data) 32 { 33 var result = UserItems.Update(data); 34 return new ObjectResult(result); 35 } 36 37 [HttpDelete("{id}")] 38 public IActionResult Delete(string id) 39 { 40 var result = UserItems.Delete(id); 41 return new ObjectResult(result); 42 } 43 }
View Code
3.修改startup.cs文件
注入UserRepository:services.AddSingleton<IUserRepository, UserRepository>();
![](/assets/blank.gif)
![](/assets/blank.gif)
1 public class Startup 2 { 3 public Startup(IHostingEnvironment env) 4 { 5 var builder = new ConfigurationBuilder() 6 .SetBasePath(env.ContentRootPath) 7 .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) 8 .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 9 .AddEnvironmentVariables(); 10 Configuration = builder.Build(); 11 } 12 13 public IConfigurationRoot Configuration { get; } 14 15 // This method gets called by the runtime. Use this method to add services to the container. 16 public void ConfigureServices(IServiceCollection services) 17 { 18 // Add framework services. 19 services.AddMvc(); 20 services.AddCors(options => { 21 options.AddPolicy("AllowAll", 22 builder => { 23 builder.AllowAnyOrigin() 24 .AllowAnyMethod() 25 .AllowAnyHeader() 26 .AllowCredentials(); 27 }); 28 }); 29 30 services.AddSingleton<IUserRepository, UserRepository>(); 31 } 32 33 // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 34 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 35 { 36 loggerFactory.AddConsole(Configuration.GetSection("Logging")); 37 loggerFactory.AddDebug(); 38 app.UseCors("AllowAll"); 39 app.UseMvc(); 40 } 41 }
View Code
其中services.AddCors。。。。和Configure方法中的app.UseCors("AllowAll");都是为了解决跨域访问问题
4.部署到debian8
在主机上安装.dotnet core 1.1(TODO:介绍debian8安装dotnet core1.1)
vs——生成——发布——文件夹
将要发布的程序上传到主机的普通用户目录下(TODO:linux新建普通用户,安装ftp并配置ftp服务)
运行命令:dotnet 程序集名称.dll
5.使用守护程序保持程序运行
为了让程序一直在主机上保持运行,这里我们安装微软推荐的守护程序:Supervisor(TODO:介绍安装并配置Supervisor)
项目源码已经上传github:https://github.com/LuckyMars/AliyunWebAPI
其中TODO部分会以新的随笔形式详细介绍。
转载于:https://www.cnblogs.com/luckymars/p/7344396.html
Asp.net Core1.1创建简单WebAPI对Mongodb进行CRUD操作相关推荐
- php xml 增删改查,PHP实现对xml进行简单的增删改查(CRUD)操作示例
本文实例讲述了PHP实现对xml进行简单的增删改查(CRUD)操作.分享给大家供大家参考,具体如下: 假如有下面xml文件: 55.8 56 40 339 如何使用php对它进行CRUD?其实像这种简 ...
- php mysql crud demo_基于php和mysql的简单的dao类实现crud操作功能_PHP教程
代码如下: public function SimpleDao() { if ($this->_con == null) { $this->_con = @mysql_connect(&q ...
- 【半译】在ASP.NET Core中创建内部使用作用域服务的Quartz.NET宿主服务
在我的上一篇文章<在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度>,我展示了如何使用ASP.NET Core创建Quartz.NET托管服务并使用它来按计 ...
- ASP.NET Core Razor 标签助手 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Razor 标签助手 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Razor 标签助手 上一章节我们介绍了视图导入,学习了 ...
- ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程
ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单 ...
- ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程
ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单 ...
- WCF技术剖析之五:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务
原文:WCF技术剖析之五:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务 在<基于IIS的WCF服务寄宿(Hosting)实现揭秘>中,我们谈到在采用基于IIS(或者 ...
- ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程
ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core Identity 迁移数据 - ASP.NET C ...
- ASP.NET Core 配置 - 创建自定义配置提供程序
ASP.NET Core 配置 - 创建自定义配置提供程序 在本文中,我们将创建一个自定义配置提供程序,从数据库读取我们的配置.我们已经了解了默认配置提供程序的工作方式,现在我们将实现我们自己的自定义 ...
最新文章
- 加载NMGameX.dll时出错?
- 抛物线交点式公式_2020“九校联考”中点公式解决平四存在性问题
- 题库练习4(提取不重复的数字、字符个数统计、数字颠倒、字符串反转)
- java nio详解,Java NIO API详解
- Permission denied (publickey) 解决方案
- Linux复习-shell程序设计
- jQuery的DOM操作之捕获和设置
- delphi 获取计算机,Delphi中用GetTickCount获取计算机运行时间
- 动态捕捉(一)VR纪录片例子
- Python利用wakeonlan库 局域网 网络唤醒电脑
- 谷歌SEO之如何使用Ahrefs工具选择关键词(2022更新教程)
- Racket编程指南——17 创造语言
- (保姆级)国内1块钱注册火爆全网的OpenAI-ChatGPT机器人
- mysql embeded 用法_Embedded Mysql | 学步园
- 使用 Lightly 在线格式化 HTML
- iOS 自动生成各种尺寸的App Icon 和 Launch Image( App Icon Gear)
- 赵小楼《天道》《遥远的救世主》解读(40)芮伟峰的“父爱”和芮小丹的“活出自我”
- git commit使用其他人的用户名和邮箱提交代码
- C++ POCO库(访问数据库,版本问题,本人配置失败)
- Camera成像原理(raw图如何产生的)