Я использую последнюю версию разработки коннектора - бета-версию 6.3.3 для подключения к базе данных mysql через Entity Framework 4 в VS2010.
У меня есть следующий оператор Linq, который использует столбец TIMESTAMP - createDate - в запросе. Вот код:
int timeThreshold = 5;
DateTimeOffset cutoffTime = DateTime.Now.AddMinutes(-timeThreshold);
using (var context = new opusismEntities())
{
var unprocessedMessages = from m in context.messages
where m.createdDate <= cutoffTime
select m;
try
{
foreach (var message in unprocessedMessages)
{
int gfff = 5;
}
}
catch (Exception e)
{
string exceptionString = e.InnerException.ToString();
}
}
CLR выдает следующее исключение:
"MySql.Data.MySqlClient.MySqlException (0x80004005): неустранимая ошибка при выполнении команды. ---> MySql.Data.MySqlClient.MySqlException (0x80004005): невозможно сериализовать значение даты / времени. \ R \ at MySql.Data.Types.MySqlDateTime.MySql.Data.Types.IMySqlValue. , Параметры MySqlConnectionStringBuilder) \ r \ n в MySql.Data.MySqlClient.Statement.SerializeParameter (параметры MySqlParameterCollection, пакет MySqlPacket, String parmName) \ r \ n в параметрах MySql.Data.MySqletaraction.Player.Player.Player.Player.Player.Player.Player. пакет) \ r \ n в MySql.Data.MySqlClient.Statement.BindParameters () \ r \ n в MySql.Data.MySqlClient.Statement.Execute () \ r \ n в MySql.Data.MySqlClient.PreparableStatement.Execute ( \ r \ n в MySql.Data.MySqlClient.MySqlCommand.ExecuteReader (CommandBehavior поведение vior) \ r \ n в MySql.Data.MySqlClient.MySqlCommand.ExecuteReader (поведение CommandBehavior) \ r \ n в MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader (поведение CommandBehavior). dom .omom в системе .ExecuteReader (поведение CommandBehavior) \ r \ n в System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands (EntityCommand entityCommand, поведение CommandBehavior) "
Я попытался последовать совету по следующей ссылке:
http://bugs.mysql.com/bug.php?id=52550
, объявив DateTime вместо DateTimeOffset:
DateTime cutoffTime = DateTime.Now.AddMinutes(-timeThreshold);
...
var unprocessedMessages = from m in context.messages
where m.createdDate.DateTime <= cutoffTime
select m;
и использовать формат .createdDate.DateTime, но Entity Framework не нравится и возвращает исключение:
Указанный тип члена DateTime не поддерживается в LINQ to Entities
Это сообщалось как ошибка в предыдущих версиях NET / Connector.
Надеемся, что GA версии 6.3.4 исправит эту проблему, но она все еще сохраняется в бета-версии 6.3.3.