中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

EF架(jia)構(gou)~讓(rang)mysql支持DbFunctions擴展函數(shu)

回到目錄

對于在Linq To Entity里(li)使用(yong)日期(qi)函數(shu)需要DbFunctions里(li)的(de)(de)(de)(de)擴展方(fang)法(fa),而不能使用(yong).net里(li)的(de)(de)(de)(de)日期(qi)函數(shu),因為(wei)linq的(de)(de)(de)(de)代碼(ma)會被(bei)翻(fan)譯成(cheng)SQL發到數(shu)據庫端,如(ru)你的(de)(de)(de)(de).net方(fang)法(fa)對于數(shu)據庫是不知(zhi)道的(de)(de)(de)(de),所以需要使用(yong)DbFunctions里(li)的(de)(de)(de)(de)函數(shu),它是為(wei)sqlserver設計的(de)(de)(de)(de),而如(ru)果(guo)你的(de)(de)(de)(de)數(shu)據源是mysql,那(nei)你就尷尬(ga)了(le),我(wo)開始(shi)以為(wei)Mysql.Data里(li)集成(cheng)了(le)這些擴展函數(shu),可遺憾的(de)(de)(de)(de)是沒有集成(cheng),所以我(wo)們需要使用(yong)其它解決方(fang)案。

DbFunctions里的數據庫函數

支持MySql的解決方案

在mysql里添加對象的自函(han)數函(han)數

BEGIN
    #返回兩個日期相差月份數
  RETURN  PERIOD_DIFF(DATE_FORMAT(`to`,'%Y%m'),DATE_FORMAT(`from`,'%Y%m'));
END

然后在(zai)linq里使用DbFunctions就可以OK了,不會(hui)出現未定義函(han)數的問題(ti)了

     var result =repository.GetModel(
                  i => DbFunctions.DiffMonths(i.CreateDate, DateTime.Now) > 1)
          .Take(20)
          .ToList();

然后程(cheng)序可以正常使用(yong)了,感(gan)謝各(ge)位(wei)的閱讀!

回到目錄

 

posted @ 2017-08-16 09:54  張占嶺  閱讀(2487)  評論(0)    收藏  舉報