开发工具 vs2017 +mssqlsever

打开vs2017,新建web项目

 

点击确认,生成项目,在项目中增加文件夹model,在model中增加类todoitem

1 public class todoitem
2     {
3         public long id { get; set; }
4         public string name { get; set; }
5         public bool iscomplete { get; set; }
6 
7     }

在model中增加类todocontext,用于与数据库的交互

1  public class todocontext : dbcontext
2     {
3         public todocontext(dbcontextoptions<todocontext> options)
4             : base(options)
5         {
6         }
7 
8         public dbset<todoitem> todoitems { get; set; }
9     }

打开appsettings.json,配置数据库连接字符串

{
  "logging": {
    "loglevel": {
      "default": "warning"
    }
  },
  "allowedhosts": "*",
  "connectionstrings": {
    "todocontext": "server=.;database=webapidemo;trusted_connection=true;multipleactiveresultsets=true"
  }

}

在startup中,找到注册服务的方法configureservices中注册数据库上下文,并指定数据库为sqlserver

 public void configureservices(iservicecollection services)
        {
            services.adddbcontext<models.todocontext>(opt =>
             opt.usesqlserver(configuration.getconnectionstring("todocontext")));  //使用sqlserver数据库

            services.addmvc().setcompatibilityversion(compatibilityversion.version_2_2);
        }

至此,基本的配置已经完成,现在用ef的codefirst方式,创建数据库,通过工具-》nuget包管理器–》程序包管理器控制台 调出控制台

命令如下:

add-migration initial
update-database

  现在数据库就已经搭建完毕

 

接下来我们在control文件夹下增加todocontroller 

 [route("api/[controller]")]
    [apicontroller]
    public class todocontroller : controllerbase
    {
        private readonly todocontext _context;

        public todocontroller(todocontext context)
        {
            _context = context;

            if (_context.todoitems.count() == 0)
            {
                // create a new todoitem if collection is empty,
                // which means you can't delete all todoitems.
                _context.todoitems.add(new todoitem { name = "item1" });
                _context.savechanges();
            }
        }

        // get: api/todo
        [httpget]
        public async task<actionresult<ienumerable<todoitem>>> gettodoitems()
        {
            return await _context.todoitems.tolistasync();
        }

        // get: api/todo/5
        [httpget("{id}")]
        public async task<actionresult<todoitem>> gettodoitem(long id)
        {
            var todoitem = await _context.todoitems.findasync(id);

            if (todoitem == null)
            {
                return notfound();
            }

            return todoitem;
        }
    }

  至此,整个api项目已经搭建完毕,现在可以验证是否ok

看到调用api,已经成功返回值,接下来一篇我们就聊聊常用的post和get,以及传参的事情