欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.net core Webapi +EF

程序员文章站 2023-11-14 17:10:28
开发工具 Vs2017 +MSsqlsever 打开VS2017,新建web项目 点击确认,生成项目,在项目中增加文件夹Model,在Model中增加类TodoItem 1 public class TodoItem 2 { 3 public long Id { get; set; } 4 publ ......

开发工具 vs2017 +mssqlsever

打开vs2017,新建web项目

.net core Webapi +EF

.net core Webapi +EF

 

点击确认,生成项目,在项目中增加文件夹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包管理器--》程序包管理器控制台 调出控制台

.net core Webapi +EF

命令如下:

add-migration initial
update-database

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

 .net core Webapi +EF

接下来我们在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

.net core Webapi +EF

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