Asp.net Core1.1创建简单WebAPI对Mongodb进行CRUD操作
1.使用VS2017建立一个.netcore1.1的WebAPI项目
选择webAPI模板
2.添加mongodb驱动
工具——NuGet包管理器——程序包管理控制台:
Install-Package MongoDB.Driver
3.创建对应的接口已经实现类
1.创建mongodb操作帮助类
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,具体内容如下
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.创建数据库操作接口以及实现类
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
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
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>();
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 配置 - 创建自定义配置提供程序 在本文中,我们将创建一个自定义配置提供程序,从数据库读取我们的配置.我们已经了解了默认配置提供程序的工作方式,现在我们将实现我们自己的自定义 ...
最新文章
- 操作系统的进程调度简析
- 习题1.8 二分查找 (20 分)
- 零基础如何学python-零基础小白如何学python,想请教大家,求指导 ?
- 【ZZ】Python的主(main)函数问题
- edas部署需要哪些参数_强夯设计与施工中需要确定的主要技术参数有哪些
- 小米首部5G手机正式发布 海外营收将很快超过国内
- 【Qt教程】1.1 - Qt5.12.9 安装
- L1-044 稳赢-PAT团体程序设计天梯赛GPLT
- PBS 作业调度应用
- python程序员月薪-据说做Python程序员,都月薪上万?
- javascript设计模式之发布订阅模式
- QT5.14.2 官方例子 - 学习系列
- C#使用LitJson解析JSON
- AMR音频文件格式分析
- PHPMYWIND 图片信息调用
- 如何与其他用户共享SkyBell HD访问
- 2021年中国外汇交易情况分析:中国银行结汇金额为16.5万亿元,同比增长17%[图]
- spin_lock、spin_lock_bh、spin_lock_irq、spin_lock_irqsave的使用
- 陈吉平-阿里巴巴离职DBA在35岁总结的职业生涯
- 独孤思维:长期稳妥的赚钱方法