我試圖運行此查詢:規範功能「EntityFunctions.TruncateTime」不存在MYSQL
DateTime DDate=DateTime.Today; //Today's date without Time
var v= db.measurements.Where(m => EntityFunctions.TruncateTime(m.InDate) == DDate);
它只是返回在那兩個日期是相等的對象,忽視了時間的一部分。
但我得到:
{ 「FUNCTION [數據庫] .TruncateTime不存在」}
堆棧跟蹤:
at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
我使用:
- C# Visual Studio 2010
- EntityFramework 4數據庫第一個
- NetFramework 4
- MySQL服務器5.6
MySQL.Data的版本和MySQL.Data.Entity是6.6.5.0
TruncateTime is supported by MySQL.
Same thing happened to this person.
這應該是答案。查詢優化器將無法使用自定義函數優化任何查詢,因此應使用函數內置的函數 – drake7707
我處於託雷斯的答案在我的情況下不起作用的情況。這個答案看起來非常有希望,但似乎不完整或不正確。例如,我的EDI不瞭解FunctionConvention。你能更完整地解釋你的代碼嗎? – Goose
@ Goose - 我不確定EDI是什麼意思,但如果它不瞭解FunctionConvention,它看起來像你使用的是一個非常舊的版本的實體框架。你知道你使用的是哪個版本嗎? – Svarog