You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向含DateTime类型列的SQL Server表插入当前日期时间并解决转换报错

问题原因

你遇到的报错是因为AppUser类的creationDate属性加了不适用的[MaxLength(100)]数据注解。MaxLength特性仅支持校验字符串、数组、集合类型的长度,无法作用于DateTime值类型,所以触发了类型转换异常。

解决方案
  • 第一步:直接删除creationDate属性上的[MaxLength(100)]注解即可,原有的[DataType(DataType.DateTime)]注解可以保留,用于前端渲染时的类型识别。
  • 第二步:如果需要明确指定SQL Server中对应字段的存储类型,可以额外添加列类型注解,示例如下:
[Display(Name = "Creation date")]
[DataType(DataType.DateTime)]
[Column(TypeName = "datetime2")] // 对应SQL Server的datetime2类型,兼容所有DateTime值
public DateTime creationDate { get; set; }
  • 额外说明:你原有的赋值逻辑DateTime.Now不需要做任何格式转换,EF Core会自动完成DateTime类型到SQL Server日期类型的映射,无需手动处理格式。如果需要避免时区导致的时间偏差,建议改用DateTime.UtcNow存储UTC时间,前端展示时再转换为用户所在时区的时间即可。

内容的提问来源于stack exchange,提问作者user17525129

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:36:09