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操作相关推荐

  1. php xml 增删改查,PHP实现对xml进行简单的增删改查(CRUD)操作示例

    本文实例讲述了PHP实现对xml进行简单的增删改查(CRUD)操作.分享给大家供大家参考,具体如下: 假如有下面xml文件: 55.8 56 40 339 如何使用php对它进行CRUD?其实像这种简 ...

  2. php mysql crud demo_基于php和mysql的简单的dao类实现crud操作功能_PHP教程

    代码如下: public function SimpleDao() { if ($this->_con == null) { $this->_con = @mysql_connect(&q ...

  3. 【半译】在ASP.NET Core中创建内部使用作用域服务的Quartz.NET宿主服务

    在我的上一篇文章<在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度>,我展示了如何使用ASP.NET Core创建Quartz.NET托管服务并使用它来按计 ...

  4. ASP.NET Core Razor 标签助手 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Razor 标签助手 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Razor 标签助手 上一章节我们介绍了视图导入,学习了 ...

  5. ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程

    ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单 ...

  6. ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程

    ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单 ...

  7. WCF技术剖析之五:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务

    原文:WCF技术剖析之五:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务 在<基于IIS的WCF服务寄宿(Hosting)实现揭秘>中,我们谈到在采用基于IIS(或者 ...

  8. ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程

    ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core Identity 迁移数据 - ASP.NET C ...

  9. ASP.NET Core 配置 - 创建自定义配置提供程序

    ASP.NET Core 配置 - 创建自定义配置提供程序 在本文中,我们将创建一个自定义配置提供程序,从数据库读取我们的配置.我们已经了解了默认配置提供程序的工作方式,现在我们将实现我们自己的自定义 ...

最新文章

  1. 操作系统的进程调度简析
  2. 习题1.8 二分查找 (20 分)
  3. 零基础如何学python-零基础小白如何学python,想请教大家,求指导 ?
  4. 【ZZ】Python的主(main)函数问题
  5. edas部署需要哪些参数_强夯设计与施工中需要确定的主要技术参数有哪些
  6. 小米首部5G手机正式发布 海外营收将很快超过国内
  7. 【Qt教程】1.1 - Qt5.12.9 安装
  8. L1-044 稳赢-PAT团体程序设计天梯赛GPLT
  9. PBS 作业调度应用
  10. python程序员月薪-据说做Python程序员,都月薪上万?
  11. javascript设计模式之发布订阅模式
  12. QT5.14.2 官方例子 - 学习系列
  13. C#使用LitJson解析JSON
  14. AMR音频文件格式分析
  15. PHPMYWIND 图片信息调用
  16. 如何与其他用户共享SkyBell HD访问
  17. 2021年中国外汇交易情况分析:中国银行结汇金额为16.5万亿元,同比增长17%[图]
  18. spin_lock、spin_lock_bh、spin_lock_irq、spin_lock_irqsave的使用
  19. 陈吉平-阿里巴巴离职DBA在35岁总结的职业生涯
  20. 独孤思维:长期稳妥的赚钱方法

热门文章

  1. python三大神器之生成器
  2. 课后作业-阅读任务-阅读提问-3
  3. Fescar 发布 0.3.0 版本, 支持 Eureka 注册中心
  4. springboot 热部署 idea版本(转)
  5. eclipse插件之easyshell
  6. Linux 小知识翻译 - 「文件系统的种类」
  7. 面部表情自动识别技术及在游戏行业的应用
  8. C/C++:sizeof('a')的值为什么不一样?
  9. 用tarball实现liferay自动安装部署15-复制定制后的catalina.sh
  10. mysql中文无法显示