gpt4 book ai didi

mysql - LINQ to Entities 不支持指定的类型成员 'DateTime'

转载 作者:可可西里 更新时间:2023-11-01 08:56:53 25 4
gpt4 key购买 nike

我正在使用连接器的最新开发版本 - 6.3.3 beta 通过 VS2010 中的 Entity Framework 4 连接到 mysql 数据库。

我有以下 Linq 语句,它在查询中使用 TIMESTAMP 列 - createdDate。这是代码:

        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): 命令执行期间遇到 fatal error 。---> MySql.Data.MySqlClient.MySqlException (0x80004005): 无法序列化日期/时间值。\r\n 位于MySql.Data.Types.MySqlDateTime.MySql.Data.Types.IMySqlValue.WriteValue(MySqlPacket 数据包, bool 二进制,对象值,Int32 长度)\r\n 在 MySql.Data.MySqlClient.MySqlParameter.Serialize(MySqlPacket 数据包, bool 二进制, MySqlConnectionStringBuilder 设置)\r\n at MySql.Data.MySqlClient.Statement.SerializeParameter(MySqlParameterCollection parameters, MySqlPacket packet, String parmName)\r\n at MySql.Data.MySqlClient.Statement.InternalBindParameters(String sql, MySqlParameterCollection parameters, MySqlPacket数据包)\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 行为r)\r\n 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior 行为)\r\n 在 MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior 行为)\r\n 在 System.Data.Common.DbCommand .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 不喜欢它并返回异常:

LINQ to Entities 不支持指定的类型成员“DateTime”


这是 NET/Connector 以前版本中的错误报告。

希望 GA 版本 6.3.4 能够解决这个问题,但它仍然存在于 6.3.3 beta 中。

最佳答案

这是 LINQ to Entities 问题..它不允许您在查询中使用类似的属性/方法...不仅适用于 DateTime,也适用于其他。

获取另一个变量中的值并在查询中使用该变量

DateTime dt=createdDate.DateTime;

或者只是删除 DateTime...因为它的值是相同的...应该消除异常。但是我不确定您正在尝试实现什么...

关于mysql - LINQ to Entities 不支持指定的类型成员 'DateTime',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3514241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com