0

我有实体框架 ObjectContext。我需要更新日期时间类型的列。

这是我的代码:

ObjectContext.ExecuteStoreCommand(string.Format("update MyTable set DateTimeField='{0}' where Id = {1}",
                                  myEntity.DateTimeField, IdValue));

为什么我会收到这样的异常:

提交操作失败。将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。该语句已终止。

4

2 回答 2

4

ObjectContext.ExecuteStoreCommand接受 SqlParameters 所以如果你使用参数化查询会更好:

ObjectContext.ExecuteStoreCommand(
    "update MyTable set DateTimeField=@pDateTimeField  where Id = @pID", 
      new SqlParameter {ParameterName = "@pDateTimeField", Value =myEntity.DateTimeField  },
      new SqlParameter {ParameterName = "@pID", Value =IdValue });

请参阅:使用参数化命令 - MSDN

目前您的代码不起作用,因为它正在考虑DateTime作为字符串值。

于 2013-05-23T11:07:58.767 回答
2

看起来 myEntity.DateTimeField 是一个字符串而不是日期时间字段。

于 2013-05-23T11:05:37.237 回答