EF Core 備忘

efcore-1.png
  1. 模糊查詢
    sql
SELECT * from A
WHERE A.字段x like '%條件內(nèi)容x%'

linq

var list = (from a in context.A
            where a.字段x.Contains("條件內(nèi)容x")
            select new
            {
                 a.字段
            }).AsNoTracking().ToList();
  1. 內(nèi)連接查詢
    sql
SELECT * from A
inner JOIN B 
ON A.字段1 = B.字段1
WHERE A.字段x = '條件內(nèi)容x'
and B.字段x = '條件內(nèi)容x'

linq

var list = (from a in context.A
            join b in context.B
            on a.字段1 equals b.字段1
            where a.字段x == "條件內(nèi)容x"
            && b.字段x == "條件內(nèi)容x"
            select new
            {
                 a.字段,
                 b.字段
            }).AsNoTracking().ToList();
  1. 左連接查詢
    sql
SELECT * from A
left JOIN B 
ON A.字段1 = B.字段1
WHERE A.字段x = '條件內(nèi)容x'

linq

var list = (from a in context.A
            join b in context.B
            on a.字段1 equals b.字段1 into ab
            from abl in ab.DefaultIfEmpty()
            where a.字段x == "條件內(nèi)容x"
            select new
            {
                 a.字段,
                 b.字段
            }).AsNoTracking().ToList();
  1. 左連接查詢(連接內(nèi)帶條件)
    sql
SELECT * from A
left JOIN B 
ON A.字段1 = B.字段1 
and A.字段2 = '條件內(nèi)容1' 
and A.字段3 = '條件內(nèi)容2'
WHERE A.字段x = '條件內(nèi)容x'

linq

var list = (from a in context.A
            join b in context.B
            on a.字段1 equals b.字段1
            .Where(b1=>b1.字段2 == "條件內(nèi)容2" && b1.字段3 == "條件內(nèi)容3")
            into ab
            from abl in ab.DefaultIfEmpty()
            where a.字段x == "條件內(nèi)容x"
            select new
            {
                a.字段,
                b.字段
            }).AsNoTracking().ToList();
  1. 遞歸查詢
    表結(jié)構(gòu)

ID PID XXX
1 1 大哥
2 1 二哥
3 2 三弟
pid和id是同一張表中的主外鍵關(guān)系俄周,常見的一種的上下級表結(jié)構(gòu)設(shè)計彬伦,如果需要再linq里面進行查詢id為1的所有子級列表就需要用到關(guān)鍵詞SelectMany

/// <summary>
/// 向下遞歸獲取子級ID
/// </summary>
/// <param name="pId"></param>
/// <returns></returns>
private List<uint> GetSonId(uint pId)
{
    using (var context = new DBContext())
    {
        var ps = (from p in context.表名
                select new
                {
                    p.id,
                    p.pid
                }).AsNoTracking().ToList();
        if (ps.Any())
        {
            var query = (from c in 表名
                            where c.pid == pId
                            select c.id).ToList();
            return query.Concat(query.SelectMany(GetSonId)).ToList();
        }
        else
        {
            return new List<uint>();
        }
    }
}
  1. 獲取EF SaveChanges前未提交到數(shù)據(jù)庫中的數(shù)據(jù)
    此處的適用場景為批量添加存在主外鍵關(guān)聯(lián)的數(shù)據(jù)讲逛,過程中需要判斷外鍵數(shù)據(jù)是否已經(jīng)存在雷客,如果每條數(shù)據(jù)每次都saveChanges到數(shù)據(jù)庫拴曲,然后再從數(shù)據(jù)庫中去查詢外鍵數(shù)據(jù)是否存在侧蘸,將耗費很長的時間彬碱,在本地將Add過的外鍵數(shù)據(jù)取出枕屉,直接在本地判斷將極大的提高程序的效率乐纸。
using (var context = new DBContext())
{
    var localList = context.Entity.Local;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衬廷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子汽绢,更是在濱河造成了極大的恐慌吗跋,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宁昭,死亡現(xiàn)場離奇詭異小腊,居然都是意外死亡,警方通過查閱死者的電腦和手機久窟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門秩冈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人斥扛,你說我怎么就攤上這事入问。” “怎么了稀颁?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵芬失,是天一觀的道長。 經(jīng)常有香客問我匾灶,道長棱烂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任阶女,我火速辦了婚禮颊糜,結(jié)果婚禮上哩治,老公的妹妹穿的比我還像新娘。我一直安慰自己衬鱼,他們只是感情好业筏,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸟赫,像睡著了一般蒜胖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抛蚤,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天台谢,我揣著相機與錄音,去河邊找鬼岁经。 笑死朋沮,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蒿偎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怀读,長吁一口氣:“原來是場噩夢啊……” “哼诉位!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起苍糠,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤啤誊,失蹤者是張志新(化名)和其女友劉穎岳瞭,沒想到半個月后蚊锹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡姚炕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年丢烘,在試婚紗的時候發(fā)現(xiàn)自己被綠了柱宦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片播瞳。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖忧侧,靈堂內(nèi)的尸體忽然破棺而出石窑,到底是詐尸還是另有隱情苍柏,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布试吁,位于F島的核電站,受9級特大地震影響烛恤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缚柏,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一碟贾、第九天 我趴在偏房一處隱蔽的房頂上張望币喧。 院中可真熱鬧袱耽,春花似錦杀餐、人聲如沸朱巨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至洪唐,卻和暖如春钻蹬,著一層夾襖步出監(jiān)牢的瞬間凭需,已是汗流浹背脉让。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工功炮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人薪伏。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像嫁怀,于是被迫代替她去往敵國和親设捐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

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

  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,811評論 0 11
  • 轉(zhuǎn) # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    呂品?閱讀 9,728評論 0 44
  • 什么是SQL數(shù)據(jù)庫: SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫。SQL是...
    西貝巴巴閱讀 1,816評論 0 10
  • 什么是數(shù)據(jù)庫曙蒸? 數(shù)據(jù)庫是存儲數(shù)據(jù)的集合的單獨的應(yīng)用程序岗钩。每個數(shù)據(jù)庫具有一個或多個不同的API纽窟,用于創(chuàng)建兼吓,訪問,管理...
    chen_000閱讀 4,035評論 0 19
  • 我把注意力關(guān)注在很多過去的人和事上了审孽。總是不自覺的會因為過去的人和事難過浑娜。也時常腦子有病的為別人瞎操心。比如 過去...
    陳巧_每天都是新的閱讀 330評論 0 0