WebApi多表查詢(返回多個需求表的數(shù)據(jù))

1:簡單介紹什么是Web api

REST屬于一種設(shè)計風(fēng)格瞎抛,REST 中的 POST(新增數(shù)據(jù))钓株,GET(取得數(shù)據(jù))您单,PUT(更新數(shù)據(jù))斋荞,DELETE(刪除數(shù)據(jù))來進(jìn)行數(shù)據(jù)庫的增刪改查,而如果開發(fā)人員的應(yīng)用程式符合REST原則虐秦,則它的服務(wù)為“REST風(fēng)格Web服務(wù)“也稱的RESRful Web API”平酿。

微軟的web api是在vs2012上的mvc4項(xiàng)目綁定發(fā)行的,它提出的web api是完全基于RESTful標(biāo)準(zhǔn)的悦陋,完全不同于之前的(同是SOAP協(xié)議的)wcf和webService蜈彼,它是簡單,代碼可讀性強(qiáng)的俺驶,上手快的幸逆,如果要拿它和web服務(wù)相比,我會說暮现,它的接口更標(biāo)準(zhǔn)还绘,更清晰,沒有混亂的方法名稱栖袋,有的只有幾種標(biāo)準(zhǔn)的請求拍顷,如get,post,put,delete等,它們分別對應(yīng)的幾個操作塘幅,下面講一下:

GET:生到數(shù)據(jù)列表(默認(rèn))菇怀,或者得到一條實(shí)體數(shù)據(jù)

POST:添加服務(wù)端添加一條記錄,記錄實(shí)體為Form對象

PUT:添加或修改服務(wù)端的一條記錄晌块,記錄實(shí)體的Form對象爱沟,記錄主鍵以GET方式進(jìn)行傳輸

DELETE:刪除 服務(wù)端的一條記錄

2、WebApi特點(diǎn)

1)類必須繼承ApiController            

2)返回類型不再是ActionResult

3)默認(rèn)是請求WebApi控制器中的和HttpMethod同名的方法

設(shè)置當(dāng)前WebApi的默認(rèn)返回格式為json--移除xml格式

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

3匆背、步入正題
我們在正常使用的WebApi呼伸,都是可以一鍵生成“增(POST)--刪(DELETE)--改(PUT)--查(GET)”對應(yīng)的方法,但是都是僅限于單表操作钝尸,在項(xiàng)目需求下是遠(yuǎn)遠(yuǎn)不夠的括享,有時候需要對多張表進(jìn)行操作,本文僅作兩張表進(jìn)行講解珍促,多表操作其實(shí)也是一個道理铃辖,照葫蘆畫瓢,你不會猪叙?別逗~~
環(huán)境:
數(shù)據(jù)庫:SQL2012
IDE:VS2012
數(shù)據(jù)庫怎么連以及怎么生成模型自行百度娇斩,不會也可以私聊我仁卷,在這就不廢話了,生成模型后(模型至少要有兩張表喲~)
如圖:


圖片.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

建立好后,新建一個空白控制器丰介,繼承與系統(tǒng)默認(rèn)的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  //這塊是多表查詢語句,對應(yīng)剛才新建模型里的字段查詢

數(shù)據(jù)庫數(shù)據(jù)如下:
第一張表


UserInfo.PNG

第二張表

ApplyInfo.PNG

對應(yīng)查詢出來的數(shù)據(jù):

[
    {
        "ID": 1,
        "ProcessID": "121vg5fg4-fsdf-fsdfk",
        "aCreateTime": "2017-02-17T00:00:00",
        "aModifyTime": null,
        "Applicant": "裴大敏",
        "Department": "IT",
        "InvoiceValue": 100,
        "PayMoney": 200,
        "PayModel": "支付寶轉(zhuǎn)賬     ",
        "PayWho": "上海豐誠物業(yè)管理有限公司",
        "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": "銀聯(lián)轉(zhuǎn)賬      ",
        "PayWho": "上海豐誠物業(yè)管理有限公司",
        "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": "支付寶轉(zhuǎn)賬     ",
        "PayWho": "上海豐誠物業(yè)管理有限公司",
        "BankAccount": "604545646",
        "ApplyStatus": "Refused   ",
        "PayType": "付款申請      ",
        "DomainAccount": "489347378@qq.com",
        "UserTitleImg": null,
        "UserName": "裴大敏",
        "UserPassword": "peidamin",
        "bCreateTime": "2017-02-25T00:00:00",
        "bModifyTime": null
    }
]

好了鉴分,這次的教程希望能幫助到需要的朋友哮幢,可能會有點(diǎn)簡單,但我想還是會有人需要的志珍,在學(xué)習(xí)ASP.NET過程中橙垢,記錄一下,免得日后忘了碴裙,有需要源碼可以到這里來拿:https://github.com/AganYa/GetModelDataDemo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钢悲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子舔株,更是在濱河造成了極大的恐慌莺琳,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件载慈,死亡現(xiàn)場離奇詭異惭等,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)办铡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門辞做,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寡具,你說我怎么就攤上這事秤茅。” “怎么了童叠?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵框喳,是天一觀的道長。 經(jīng)常有香客問我厦坛,道長五垮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任杜秸,我火速辦了婚禮放仗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撬碟。我一直安慰自己诞挨,他們只是感情好莉撇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亭姥,像睡著了一般稼钩。 火紅的嫁衣襯著肌膚如雪顾稀。 梳的紋絲不亂的頭發(fā)上达罗,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機(jī)與錄音静秆,去河邊找鬼粮揉。 笑死,一個胖子當(dāng)著我的面吹牛抚笔,可吹牛的內(nèi)容都是我干的扶认。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼殊橙,長吁一口氣:“原來是場噩夢啊……” “哼辐宾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起膨蛮,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤叠纹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后敞葛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體誉察,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年惹谐,在試婚紗的時候發(fā)現(xiàn)自己被綠了持偏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡氨肌,死狀恐怖鸿秆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情怎囚,我是刑警寧澤卿叽,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站桩了,受9級特大地震影響附帽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜井誉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一蕉扮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颗圣,春花似錦喳钟、人聲如沸屁使。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛮寂。三九已至,卻和暖如春易茬,著一層夾襖步出監(jiān)牢的瞬間酬蹋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工抽莱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留范抓,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓食铐,卻偏偏與公主長得像匕垫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子虐呻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理象泵,服務(wù)發(fā)現(xiàn),斷路器斟叼,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • //我所經(jīng)歷的大數(shù)據(jù)平臺發(fā)展史(三):互聯(lián)網(wǎng)時代 ? 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃囈語閱讀 51,219評論 10 200
  • 一說到REST偶惠,我想大家的第一反應(yīng)就是“啊,就是那種前后臺通信方式犁柜≈摒”但是在要求詳細(xì)講述它所提出的各個約束,以及如...
    時待吾閱讀 3,423評論 0 19
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,810評論 0 11
  • 如果說愛情的甜蜜 需要金錢調(diào)味 那也不稀奇 太多的婚戀與相依 靠它維系 愛情的蹺蹺板 利益并締裙帶 美色與權(quán)...
    粉色的桃林閱讀 491評論 6 24