美文网首页.NET .NET
WebApi多表查询(返回多个需求表的数据)

WebApi多表查询(返回多个需求表的数据)

作者: 阿甘呀 | 来源:发表于2017-02-21 21:52 被阅读144次

1:简单介绍什么是Web api

REST属于一种设计风格,REST 中的 POST(新增数据),GET(取得数据),PUT(更新数据),DELETE(删除数据)来进行数据库的增删改查,而如果开发人员的应用程式符合REST原则,则它的服务为“REST风格Web服务“也称的RESRful Web API”。

微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口更标准,更清晰,没有混乱的方法名称,有的只有几种标准的请求,如get,post,put,delete等,它们分别对应的几个操作,下面讲一下:

GET:生到数据列表(默认),或者得到一条实体数据

POST:添加服务端添加一条记录,记录实体为Form对象

PUT:添加或修改服务端的一条记录,记录实体的Form对象,记录主键以GET方式进行传输

DELETE:删除 服务端的一条记录

2、WebApi特点

1)类必须继承ApiController            

2)返回类型不再是ActionResult

3)默认是请求WebApi控制器中的和HttpMethod同名的方法

设置当前WebApi的默认返回格式为json--移除xml格式

 GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

3、步入正题
我们在正常使用的WebApi,都是可以一键生成“增(POST)--删(DELETE)--改(PUT)--查(GET)”对应的方法,但是都是仅限于单表操作,在项目需求下是远远不够的,有时候需要对多张表进行操作,本文仅作两张表进行讲解,多表操作其实也是一个道理,照葫芦画瓢,你不会?别逗~~
环境:
数据库:SQL2012
IDE:VS2012
数据库怎么连以及怎么生成模型自行百度,不会也可以私聊我,在这就不废话了,生成模型后(模型至少要有两张表哟~)
如图:


图片.png

然后新建一个模型类,把你需要拿到的字段属性写到模型类里,如图:

图片.png

TestModel.cs如下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ng2GetDataTest.Models.Model
{
    public class TestModel
    {
        public int ID { get; set; }
        public string ProcessID { get; set; }
        public Nullable<System.DateTime> aCreateTime { get; set; }
        public Nullable<System.DateTime> aModifyTime { get; set; }
        public string Applicant { get; set; }
        public string Department { get; set; }
        public double InvoiceValue { get; set; }
        public double PayMoney { get; set; }
        public string PayModel { get; set; }
        public string PayWho { get; set; }
        public string BankAccount { get; set; }
        public string ApplyStatus { get; set; }
        public string PayType { get; set; }

        public string DomainAccount { get; set; }
        public string UserTitleImg { get; set; }
        public string UserName { get; set; }
        public string UserPassword { get; set; }
        public Nullable<System.DateTime> bCreateTime { get; set; }
        public Nullable<System.DateTime> bModifyTime { get; set; }
    }
}

说白了也就是自动生成的模型里,set、get的代码

图片.png

建立好后,新建一个空白控制器,继承与系统默认的ApiController

图片.png
        private DbTestEntities2 db = new DbTestEntities2();

        // GET api/GetDataTest
        public IEnumerable<Models.Model.TestModel> GetDataTest()
        {


            List<Models.Model.TestModel> rec = (from a in db.UserInfo
                                                join b in db.ApplyInfo on a.ProcessID equals b.ProcessID

                                                select new Models.Model.TestModel
                                                {
                                                    ID = a.ID,
                                                    ProcessID = a.ProcessID,
                                                    DomainAccount = a.DomainAccount,
                                                    UserTitleImg = a.UserTitleImg,
                                                    UserName = a.UserName,
                                                    UserPassword = a.UserPassword,
                                                    aCreateTime = a.CreateTime,
                                                    aModifyTime = a.ModifyTime,

                                                    bCreateTime = b.CreateTime,
                                                    bModifyTime = b.ModifyTime,
                                                    Applicant = b.Applicant,
                                                    Department = b.Department,
                                                    InvoiceValue = b.InvoiceValue,
                                                    PayMoney = b.PayMoney,
                                                    PayModel = b.PayModel,
                                                    PayWho = b.PayWho,
                                                    BankAccount = b.BankAccount,
                                                    ApplyStatus = b.ApplyStatus,
                                                    PayType = b.PayType
                                                }).ToList();
           
            return rec;
        }
    }
}
注意:List<Models.Model.TestModel> rec = (from a in db.UserInfo
                                         join b in db.ApplyInfo on a.ProcessID equals b.ProcessID  //这块是多表查询语句,对应刚才新建模型里的字段查询

数据库数据如下:
第一张表


UserInfo.PNG

第二张表

ApplyInfo.PNG

对应查询出来的数据:

[
    {
        "ID": 1,
        "ProcessID": "121vg5fg4-fsdf-fsdfk",
        "aCreateTime": "2017-02-17T00:00:00",
        "aModifyTime": null,
        "Applicant": "裴大敏",
        "Department": "IT",
        "InvoiceValue": 100,
        "PayMoney": 200,
        "PayModel": "支付宝转账     ",
        "PayWho": "上海丰诚物业管理有限公司",
        "BankAccount": "604545646",
        "ApplyStatus": "Applying  ",
        "PayType": "付款申请      ",
        "DomainAccount": "489347378@qq.com",
        "UserTitleImg": null,
        "UserName": "裴大敏",
        "UserPassword": "peidamin",
        "bCreateTime": "2017-02-20T00:00:00",
        "bModifyTime": "2017-02-21T00:00:00"
    },
    {
        "ID": 1,
        "ProcessID": "121vg5fg4-fsdf-fsdfk",
        "aCreateTime": "2017-02-17T00:00:00",
        "aModifyTime": null,
        "Applicant": "裴中敏",
        "Department": "IT",
        "InvoiceValue": 100,
        "PayMoney": 300,
        "PayModel": "银联转账      ",
        "PayWho": "上海丰诚物业管理有限公司",
        "BankAccount": "604545646",
        "ApplyStatus": "Applyed   ",
        "PayType": "付款申请      ",
        "DomainAccount": "489347378@qq.com",
        "UserTitleImg": null,
        "UserName": "裴大敏",
        "UserPassword": "peidamin",
        "bCreateTime": "2017-02-15T00:00:00",
        "bModifyTime": null
    },
    {
        "ID": 1,
        "ProcessID": "121vg5fg4-fsdf-fsdfk",
        "aCreateTime": "2017-02-17T00:00:00",
        "aModifyTime": null,
        "Applicant": "裴小敏",
        "Department": "IT",
        "InvoiceValue": 100,
        "PayMoney": 500,
        "PayModel": "支付宝转账     ",
        "PayWho": "上海丰诚物业管理有限公司",
        "BankAccount": "604545646",
        "ApplyStatus": "Refused   ",
        "PayType": "付款申请      ",
        "DomainAccount": "489347378@qq.com",
        "UserTitleImg": null,
        "UserName": "裴大敏",
        "UserPassword": "peidamin",
        "bCreateTime": "2017-02-25T00:00:00",
        "bModifyTime": null
    }
]

好了,这次的教程希望能帮助到需要的朋友,可能会有点简单,但我想还是会有人需要的,在学习ASP.NET过程中,记录一下,免得日后忘了,有需要源码可以到这里来拿:https://github.com/AganYa/GetModelDataDemo

相关文章

  • WebApi多表查询(返回多个需求表的数据)

    1:简单介绍什么是Web api REST属于一种设计风格,REST 中的 POST(新增数据),GET(取得数据...

  • Django(六)模型与数据库(多表查询)

    多表查询 在日常开发中,常常要对多个数据表同时进行数据查询。多个数据表查询需要数据表之间建立表概念西才得以实现...

  • Oracle_多表查询

    SQL多表查询 等值和不等值连接查询 从多个表中获取数据:如果在查询的时候,直接从多个表中获取数据。没有添加条件判...

  • mysql使用 from两表查询与join两表查询区别

    在mysql中,多表连接查询是很常见的需求,在使用多表查询时,可以from多个表,也可以使用join连接连个表这两...

  • SQL干货篇之查询数据

    单表查询 只在一个表中查询数据 多表查询 同时查询多个表 说明:这是在学生表student和成绩表SC中查询成绩大...

  • MySql(五)多表查询

    对于多表查询的前提:这些关联的数据表之间存在有关系(字段、某些条件) 多表查询就是求出多个表的乘积,例如t1连接t...

  • 数据库之增删改查

    增加数据(插入) 修改数据 删除数据 查找数据 基础数据 高级查询 多表查询 准备三个表 多表查询 将学生表和班级...

  • Bmob和Promise的完美结合

    试用场景,通过bmob条件查询一个表,然后通过表返回的数据,在去查询多个表,在把多个表查询到的数据全部整合成一条数...

  • mysql基础之多表查询和外键约束

    什么是多表查询 从多张表中联合查询出数据 为什么要使用多表查询 需要查询多张表中的数据,通过一张表查询是不完整的 ...

  • 08-多表查询

    默认多表查询 多表查询就是在以前查询的基础上再加一张表, 写在以前表名的后面即可 默认情况下多表查询返回的结果是笛...

网友评论

  • c84f3d45baf6:和单表一样啊,没有什么区别
    阿甘呀: @情愫飘飞 嗯嗯,确实没什么区别,给初学者入个门而已嘛,顺便记录一下😁
  • 斑斑驳驳la:高级技术宅,看不懂可是感觉很厉害的样子
    阿甘呀: @斑斑驳驳la 其实很简单的啦,给初学者入个门😂😂😂

本文标题:WebApi多表查询(返回多个需求表的数据)

本文链接:https://www.haomeiwen.com/subject/rbvuwttx.html