无法检查AspNet Identity Models兼容性:数据库无模型元数据求助
问题说明
模型兼容性检查错误
无法检查模型兼容性,因为数据库不包含模型元数据。仅可对使用Code First或Code First Migrations创建的数据库检查模型兼容性。
Identity模型运行错误
System.InvalidOperationException: 序列不包含任何元素
在 System.Linq.Enumerable.SingleOrDefault(IEnumerable`1 source)
(调用栈后续涉及ASP.NET Identity用户相关的查询操作)
解决方法
针对模型兼容性问题
- 确认数据库是通过Code First或Code First Migrations创建的:如果是手动搭建的数据库,需手动添加
__MigrationHistory元数据表,或切换为Database First开发模式。 - 若使用Code First,确保已启用Migrations并执行
Update-Database命令,生成模型元数据。 - 检查DbContext配置,确认未手动禁用模型兼容性检查(默认状态为启用)。
针对Identity的“序列不包含任何元素”错误
- 检查Identity用户表(默认表名
AspNetUsers)是否为空,排查代码中调用SingleOrDefault()后未做空值判断的逻辑,补充空值校验。 - 确认Identity模型主键配置一致:比如自定义用户类继承
IdentityUser<TKey>时,主键类型需与数据库表的主键类型完全匹配(默认是string类型,若改为int需同步配置DbContext)。 - 验证DbContext中Identity相关DbSet的映射配置,确保指向正确的数据库表。
- 若使用自定义用户/角色类,确认已在DbContext中正确注册并继承对应的Identity基类。
内容的提问来源于stack exchange,提问作者Sachin Shrestha
相关产品推荐
相关产品推荐

