想尝试.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类库。
新建完成的解决方案结构如下:
这里我以获取本地某个数据库中Address表的前10条记录为例。
使其字段与数据库一一对应,记得不要忘了设置主键(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; } }
通过Nuget为项目DataAccess和WebTest引用Microsoft.EntityFrameworkCore和Microsoft.EntityFrameworkCore.SqlServer
public class EFDbContext: DbContext { public EFDbContext(DbContextOptions<EFDbContext> options):base(options) { } public DbSet<Address> Address { get; set; } }
在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(); }
这里面有两个地方需要说明:
{ "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" } } }
首先,上代码~
[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; } }
下面来听我慢慢道来。
至此,我的Demo代码就写完了,直接F5运行,浏览器手动敲个地址/api/address/getall就可以访问到数据库里面的前十条数据啦~
尝试.Net Core—使用.Net Core + Entity FrameWork Core构建WebAPI(一)
原文:http://www.cnblogs.com/baiyunchen/p/5665100.html