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

执行update-database创建Identity表时,提示找不到datetimeoffset数据类型

解决 update-database 报错「Cannot find data type datetimeoffset」的问题

问题根源

这个错误是因为你的SQL Server数据库兼容级别太低——datetimeoffset 是SQL Server 2008及以后版本才支持的数据类型,如果数据库兼容级别设为2005或更早,就会触发该报错。默认的IdentityUser类里的LockoutEnd字段就是DateTimeOffset?类型,必须依赖数据库支持这个类型。

解决步骤

1. 修改数据库兼容级别

打开SQL Server Management Studio (SSMS),有两种方式修改:

  • 图形化操作:右键目标数据库 → 选择「属性」→ 切换到「选项」标签页 → 在「兼容级别」下拉菜单里选**SQL Server 2008 (100)**及以上版本(比如你的SSMS19对应SQL Server 2019的话,选150即可)→ 点击确定保存。
  • 执行SQL命令:直接在查询窗口运行以下代码(替换成你的数据库名):
ALTER DATABASE [你的数据库名称] SET COMPATIBILITY_LEVEL = 150;

2. 确认连接字符串正确性

检查appsettings.json里的连接字符串,确保指向的是支持datetimeoffset的SQL Server实例:

"ConnectionStrings": {
  "DefaultConnection": "Server=你的服务器地址;Database=你的数据库名;Trusted_Connection=True;MultipleActiveResultSets=true"
}

3. 重新执行迁移命令

回到Package Manager Console,再次运行:

update-database

额外排查点

  • 如果用的是LocalDB,通过sqllocaldb info命令查看版本,确保是2012及以上版本(一般VS自带的LocalDB都满足要求)。
  • 确认你没有自定义IdentityUser时额外添加了不兼容的字段,默认IdentityUser的字段都是符合.NET 5和SQL Server要求的。

内容的提问来源于stack exchange,提问作者Denisa-Maria

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:03:17