.Net Core webapi与SQLserver 的相遇

.Net Core webapi与SQLserver 的相遇
作者:秋名
撰写时间:2020 年 8 月 19 日
技术:使用.Net Core 封装webapi

//选择Asp.Net Core Web应用程序进行创建在这里插入图片描述

//选择API,选择对应的版本号
在这里插入图片描述

右键 添加控制器-(Api控制器-空)
在这里插入图片描述

1、新建控制器,配置api路由

    //Route:路由
    //api/控制器/方法名
    //api/Products/Getproducts 访问的路径
    [EnableCors("any")]//调用跨越的政策
    [Route("api/[controller]/[action]")]
    [ApiController]
   public class ProductsController : ControllerBase
    {
        public List<Products> Getproducts() {
            List<Products> productList = Products.GetProductList();
            return productList;
        }
    }

2、打开配置文件appsettings.json,配置连接SQLserver的账号和密码。

{
  "Constr": "Data Source=127.0.0.1;Database=TestBase;Uid=sa;Pwd=123",//添加数据库的连接地址
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"

3、Startup:类配置服务和应用程序的请求管道

  public void ConfigureServices(IServiceCollection services)
        {
            var conSer=Configuration.GetSection("Constr");//连接配置文件appsettings.json
            SqlHelper.Constr = conSer.Value;//获取到连接路径,将字段赋值给SqlHelper控制器的静态字段
            services.AddControllers();
        }

4、添加一个公用的文件夹Common,添加类库SqlHelper.cs(连接数据库)

  public class SqlHelper
    {
        //satic静态,一旦赋值,会一直保留这个值。不会被回收。
        public static string Constr { get; set; }
        public static DataTable ExecuteTable(string cmdText) {
            using (SqlConnection con = new SqlConnection(Constr))
            {
                con.Open();
                // SqlCommand对象:Ado.Net中执行数据库命令的对象。
                SqlCommand cmd = new SqlCommand(cmdText, con);
                //1、表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。
                //2、在SqlDataAdapter和DataSet之间没有直接连接。当完成SqlDataAdpater.Fill(DataSet)调用后,两个对象之间就没有连接了。
                SqlDataAdapter sda = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                sda.Fill(ds);

                return ds.Tables[0];
            }
        }
    }

5、新增Models文件夹,新建类Products.cs(采用充血模型)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vAYVbqmG-1597841118172)(977F76460FE14420AF303E1AA763AECF)]

ORM与EF以及EF CodeFirst模式的详细搭建过程

6、使用ORM(Object RelationMapping)对象关系映射,ORM模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

    public class Products
    {
        //建立属性字段(EF:简称实体模型)
        public int Id { get; set; }
        public string productName { get; set; }
        public string productImageUrl { get; set; }
        public string productDetaillmagUrl { get; set; }
        public decimal Price { get; set; }

        public static List<Products> GetProductList() {
            DataTable dt = SqlHelper.ExecuteTable("SELECT * FROM products");
            List<Products> products = new List<Products>();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                products.Add(ToModel(dt.Rows[i]));
            }
            return products;
        }
        
        private static Products ToModel(DataRow dr) {
            Products product = new Products();
            product.Id = (int)dr["Id"];
            product.productName = dr["productName"].ToString();
            product.productImageUrl = dr["productImageUrl"].ToString();
            product.productDetaillmagUrl = dr["productDetaillmagUrl"].ToString();
            product.Price = (decimal)dr["Price"];
            return product;
        }
    }

使用PostMan检测请求是否成功,有数据成功返回数据库数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LDqWWVOC-1597841118175)(9E3F90F4BC7345409E1EE135D8974AEC)]

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值