尝试.Net Core—使用.Net Core + Entity FrameWork Core构建WebAPI(一)
想尝试.Net Core很久了,一直没有时间,今天回家,抛开一切,先搭建一个.Net Core的Demo出来玩玩。
废话少说,咱直奔主题:
一、开发环境
VS2015 Update3
Microsoft .NET Core Tools(Preview 2)
本来想用VS Code来着,但是本着最简单原理,这里先用VS 2015,我又不是受虐狂,为啥有好用的工具摆在这里不用呢,你说是吧?
二、新建解决方案
与ASP.NET时代没有什么区别,直接新建一个解决方案,在左边选择.NET Core, 然后项目模版选择ASP.NET Core Web Application(.NET Core) 如下图。
然后填写解决方案名称和项目名称,并选择保存路径(这和以前完全一样)。然后到了第二步,选择Web API模版,身份验证方式选择无身份验证(这里只是Demo,身份验证咱就不折腾了吧,毕竟这个往往非常复杂)。并且去掉他默认打上的Host In Cloud的勾(如果你有Azure的服务器,可以勾上)。
到此,项目就创建完毕了。你可以直接点上面的运行,把项目跑起来,会直接打开一个默认的API(ValueContrller)。
这里我又创建了一个.NET Core的类库项目,用来作为数据库访问层,名称为DataAccess,这个跟原来.NET 时代的类库项目没有什么区别,只是需要建成.NET Core类库。
新建完成的解决方案结构如下:
三、开始Coding
这里我以获取本地某个数据库中Address表的前10条记录为例。
1.新建一个实体类Address
使其字段与数据库一一对应,记得不要忘了设置主键(Id)上面的[Key]特性标签。
public class Address{[Key]public Guid Id { get; set; }public string OpenId { get; set; }/// <summary>/// 收件人姓名/// </summary>public string Name { get; set; }/// <summary>/// 详细收货地址(目前仅限与榆林学院)/// </summary>public string DetailAddress { get; set; }/// <summary>/// 联系电话/// </summary>public string Tel { get; set; }/// <summary>/// 是否默认地址/// </summary>public bool IsDefault { get; set; }}
2.添加引用
通过Nuget为项目DataAccess和WebTest引用Microsoft.EntityFrameworkCore和Microsoft.EntityFrameworkCore.SqlServer
3.新建EF Core上下文(EFDbContext)
public class EFDbContext: DbContext{public EFDbContext(DbContextOptions<EFDbContext> options):base(options){}public DbSet<Address> Address { get; set; }}
4.配置EFDbContext的启动项
在Web项目的StartUp类中,找到ConfigureServices方法,新增EF的启动项,代码如下面的第一句:
public void ConfigureServices(IServiceCollection services){services.AddEntityFrameworkSqlServer().AddDbContext<EFDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqlServer")));// Add framework services. services.AddApplicationInsightsTelemetry(Configuration);services.AddMvc();}
这里面有两个地方需要说明:
- 这个方法会在项目启动的时候被调用,并且EFDbContext会被注册到ASP.NET Core自带的IOC中,以后就可以在别的地方直接注入EFDbContext了(下面会用到)。
- Configuration.GetConnectionString("SqlServer")这是去读系统的配置,系统配置都在appsettings.json文件中,需要手动添加一下配置,添加完成后类似于:
{"ConnectionStrings": {"SqlServer": "Data Source=localhost;Initial Catalog=database-name;Integrated Security=False;Persist Security Info=False;User ID=sa;Password=password"},"Logging": {"IncludeScopes": false,"LogLevel": {"Default": "Debug","System": "Information","Microsoft": "Information"}} }
5.WebAPI Controller
首先,上代码~
[Route("api/address")] public class AddressController : Controller {private EFDbContext _context;public AddressController(EFDbContext context){_context = context;}[HttpGet,Route("getall")]public IList<Address> GetAll(){var list= _context.Address.Take(10).ToList();return list;} }
下面来听我慢慢道来。
- 首先: [Route("api/address")]这个是用来定义API的公共部分,这个如果你有过WebAPI的开发经验,这个非常容易看懂,在WebAPI中,这个会被写成[RoutePreFix("api/address")]
- 其次,我们看到EFDbContext是通过构造函数被注入了,这个就会用到我们在上面StartUp类中所配置的信息。
- 接下来,方法GetAll上面的特性标签[HttpGet]定义了该API的请求谓词,Route("getall")定义了该API的地址,最终,这个地址和在Controller上面的Route会共同来决定这个API的地址,本例中这个GetAll方法最终生成的API地址为:/api/address/getall
- 接下来,使用_context对象来进行数据库操作,这个和EF是完全一样的~
至此,我的Demo代码就写完了,直接F5运行,浏览器手动敲个地址/api/address/getall就可以访问到数据库里面的前十条数据啦~
转载于:https://www.cnblogs.com/baiyunchen/p/5665100.html
尝试.Net Core—使用.Net Core + Entity FrameWork Core构建WebAPI(一)相关推荐
- [转帖]2016年时的新闻:ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0
ASP.NET Core 1.0.ASP.NET MVC Core 1.0和Entity Framework Core 1.0 http://www.cnblogs.com/webapi/p/5673 ...
- 在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句
在开发中,我们想在调试中查看EF Core执行的sql语句,可以使用SQL Studio Manager Tools工具,另一种方式是使用EF Core提供的日志.在ASP.NET Core使用Ent ...
- 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)
在开发涉及到数据库的程序时,常会遇到一开始设计的结构不能满足需求需要再添加新字段或新表的情况,这时就需要进行数据库迁移. 实现数据库迁移有很多种办法,从手动管理各个版本的ddl脚本,到实现自己的mig ...
- Entity Framework Core 练习参考
项目地址:https://gitee.com/dhclly/IceDog.EFCore 项目介绍 对 Microsoft EntityFramework Core 框架的练习测试 参考文档教程 官方文 ...
- Entity Framework Core 5中实现批量更新、删除
本文介绍了一个在EntityFramework Core 5中不需要预先加载数据而使用一句SQL语句批量更新.删除数据的开发包,并且分析了其实现原理,并且与其他实现方案做了比较. 一.背景 随着微软全 ...
- [翻译] Entity Framework Core in Action 关于这本书
Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍.原版地址. 是除了官方文档外另一个学习EF Core的 ...
- 浅析Entity Framework Core中的并发处理
前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core的并发处理方式. 1.常见的并发处 ...
- Entity Framework Core 2.0 特性介绍和使用指南
前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升级EF也发展到EF6.x,Entity Framework Core是一个支持跨平台的全新版本, ...
- Entity Framework Core 批处理语句
在Entity Framework Core (EF Core)有许多新的功能,最令人期待的功能之一就是批处理语句.那么批处理语句是什么呢?批处理语句意味着它不会为每个插入/更新/删除语句发送单独的请 ...
- 在Apworks数据服务中使用基于Entity Framework Core的仓储(Repository)实现
<在ASP.NET Core中使用Apworks快速开发数据服务>一文中,我介绍了如何使用Apworks框架的数据服务来快速构建用于查询和管理数据模型的RESTful API,通过该文的介 ...
最新文章
- the job was canceled什么意思_这些英语短语,因为相差一个“the”导致意思大不相同!...
- X86智能相机视觉系统解决方案
- 线程池之CachedThreadPool学习
- Activity的用法(一):Notification Activity
- LeetCode MySQL 1468. 计算税后工资
- 对计算机设备配置的认识,检测计算机硬件配置,知道你选购的计算机配置是否真实...
- vscode jupyter补全_Cern ROOT 在jupyter里的使用
- 1.4 多项式拟合实例
- mysql 使用concat模糊查询
- c语言图形编程.pdf,C语言图形编程
- app live photo_live photo动态壁纸下载-Live Photo动态壁纸app下载 苹果版v2.1-PC6苹果网...
- SMTP邮箱服务器发送邮件
- ubuntu20.04 磁盘管理
- 国人劝酒经典用语大全
- 微服务项目:尚融宝(42)(核心业务流程:借款额度审批(2))
- 相机选型焦距、距离的计算
- 【长期更新】计算机类企业网申地址内推码大整理
- 洛谷题目P1425 小鱼的游泳时间
- 使用ffmpeg从视频中提取音频文件
- Ubuntu16.04安装Matlab2016b