文章出處
文章列表
對于在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();
然后程序可以正常使用了,感謝各位的閱讀!
文章列表
全站熱搜