(二)3、相关数据模型(models)的创建

然后咱们再来解决Join的错误(你不会给忘了吧??!!)

在demo项目下新建一个名为Models的文件夹,用来放置数据模型,然后在Models目录下新建一个名为Join类(Join可自定义),可以把这个当做MySQL里的数据库example

然后充实一下Join.cs的内容,如果有错误提示,是因为没有添加“Microsoft.EntityFrameworkCore”,至于如何添加,上面我也说过了

复制代码
using Microsoft.EntityFrameworkCore;

namespace demo.Models
{
    public class Join:DbContext
    {
        public Join(DbContextOptions<Join> options) : base(options)
        {
        }

    }
}
复制代码

 

这时我们再返回到Startup.cs,为什么Join那里还是报错呢?因为它找不到Join这个类,所以我们现在就要添加Join这个类了,方法同上,选择“using demo.Models",然后就没有红色错误提示了

 6)现在在Join.cs里面只添加了一个构造方法,就相当于只有一个空的数据库,里面是没有表的,所以接下来我们就来添加表……的映射,把当前的数据模型与数据库的表进行一一对应。右键DB文件夹,添加,类,输入Person,确认。

    再新建一个DB文件夹的原因是为了区分数据库对应的表和在实际中遇到的表,现在可以不懂,没关系,但这样做是有好处的。

    但是有人又会问,为什么这里是Person,而不是数据库里的People,嗯…数据模型,简单来说,就是存放数据库的表的属性的。

    有人又会问,后面的{ get; set; }是什么,我也不是很懂,我的理解是该属性具有读(get)和写(set)的权限。

    有人又会问,那我有多个表呢,我只能说,4843,当然是在DB里面创建相应的类就好了啊

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace demo.Models.DB
{
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public string Gender { get; set; }
    }
}
复制代码

 

 

7)然后回到Join.cs存放数据模型(数据库有多少表就在这里添加多少个数据模型)

复制代码
using demo.Models.DB;(没错啦,就是我胡汉三了)
using Microsoft.EntityFrameworkCore;namespace demo.Models
{
    public class Join:DbContext
    {
        public Join(DbContextOptions<Join> options) : base(options)
        {
        }
        public DbSet<Person> People { get; set; }
      (如果Person提示有错,可能是没有添加第一行)
    }
}
复制代码

 

3、到这里,数据库的连接差不多就完了,下面就是来操作数据库的数据,把数据拿出来了。

    在Controllers文件里已经有个默认的ValuesController了,一般我的话会新建一个controller,ValuesController我一般只作为测试用,看看是否能连接到服务器。

    右键Controller文件夹->添加->控制器

    有人又会问,这个controller是干嘛的,我…是不是没看MVC就跑过来了,牛逼啊,那我就稍微说下,简单来说,controller这部分就是一个数据中转站,前端发送数据请求到controller,controller处理数据请求,从数据库拿到相应的数据送到前端去。你说重不重要??!!

 

 我一般选择倒数第二个,可以自动生成相应的代码

在填写控制器名称的时候按照规定来,以Controller结尾

添加后的界面

然而我们并不需要这么多,删掉多余的,就剩下这些了。

复制代码
using System.Collections.Generic;using Microsoft.AspNetCore.Mvc;

namespace demo.Controllers
{
    [Produces("application/json")]
    [Route("api/Test")]
    public class TestController : Controller
    {
        // GET: api/Test
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }
}
复制代码

 

然后再把“数据库”Join拿过来,再把People拿出来。(为方便,我把上面Using那里多余的删去了,就好看多了,至于为什么Join那里还报错,我就不用说了吧)

复制代码
using demo.Models;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;

namespace demo.Controllers
{
    [Produces("application/json")]
    [Route("api/Test")]
    public class TestController : Controller
    {
        private readonly Join _Join;
        public TestController(Join join)
        {
            _Join = join;
        }
        // GET: api/Test
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }
}
复制代码

 

 然后我们再get方法里改造一下(有from xx in xx select xx的地方,如果ps报错,这里我是用了C#集成的查询语言Linq,如果报错,在最上面加上using system.linq就好)

复制代码
[HttpGet]
public JsonResult Get()
   {
       var ps = _Join.People;
       var q = from p in ps(即这里报错)
                    select p;

        return Json(q.First());
   }
复制代码

 

 然后再来测试一下我们再数据库输入的数据

调试->开始执行(不调试),不对啊,这不是我在数据库插入的数据啊,别急,把values改为test就可以了,这就是controller的强大作用了

 

将values改为test后的样子,是不是很神奇,这样就把数据库的数据取出来了

至此,webapi的基本操作到这里就结束了。

本来我是想直接进入下一章前端Vue的,但是因为在这里我遇到了太多的坑,不想让大家再深陷于此,所以再来开一篇来说一下,话不多说,下一章传送门

可能出现的问题

posted @ 2018-02-05 09:54  宛如一个ZD  阅读(1521)  评论(2编辑  收藏  举报