文章出處

回到目錄

對于在Linq To Entity里使用日期函數需要DbFunctions里的擴展方法,而不能使用.net里的日期函數,因為linq的代碼會被翻譯成SQL發到數據庫端,如你的.net方法對于數據庫是不知道的,所以需要使用DbFunctions里的函數,它是為sqlserver設計的,而如果你的數據源是mysql,那你就尷尬了,我開始以為Mysql.Data里集成了這些擴展函數,可遺憾的是沒有集成,所以我們需要使用其它解決方案。

DbFunctions里的數據庫函數

支持MySql的解決方案

在mysql里添加對象的自函數函數

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

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

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

然后程序可以正常使用了,感謝各位的閱讀!

回到目錄

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()