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

注册时遇InvalidOperationException:ChatMessage.UserName类型映射异常求助

问题排查请求:ChatMessage.UserName类型映射错误

错误信息

InvalidOperationException: The 'object' property 'ChatMessage.UserName' could not be mapped to the database type 'nvarchar(max)' because the database provider does not support mapping 'object' properties to 'nvarchar(max)' columns

InvalidOperationException: ChatMessage.UserName has property 'object' instead of 'String'

问题核心:服务器需存储nvarchar类型用户名,但系统将ChatMessage.UserName识别为Object类型,已完成的相关代码定义如下:

前端输入代码

<div class="form-floating mb-3">
    <input asp-for="Input.UserName" class="form-control" placeholder="UserName" />
    <label asp-for="Input.UserName">User Name</label>
</div>

注册模型中UserName定义

public string? UserName { get; set; } = string.Empty;

创建User实例代码

if (ModelState.IsValid){
    var user = new User
    {
        UserName = Input.UserName,
        Email = Input.Email,
        PasswordHash = HashPassword(Input.Password)
    };
    _context.Users.Add(user);

User实体类定义

public class User{
    public int UserID { get; set; }
    public string UserName { get; set; }
    public string Email { get; set; }
    public string PasswordHash { get; set; }
    public DateTime CreatedAt { get; set; }
}

排查线索

  • 检查ChatMessage类的定义:错误提示指向ChatMessage.UserName而非User.UserName,确认ChatMessage中UserName的类型是否为string,是否误定义为object
  • 检查EF Core实体映射配置:确认DbContext中ChatMessage实体的映射规则,是否错误将UserName设置为object类型映射到nvarchar(max)
  • 查看数据迁移文件:检查已生成的迁移文件中,ChatMessage表的UserName列对应的CLR类型是否为object,若有误需修改迁移文件并重新应用
  • 排查命名冲突:确认项目中是否存在多个ChatMessage类定义,或因命名空间引用错误加载了错误的类
  • 验证ModelState完整信息:在注册逻辑中输出ModelState的所有错误,确认Input.UserName是否存在类型转换错误,导致传递给ChatMessage时变为object类型
  • 检查ChatMessage与User的关联逻辑:如果ChatMessage依赖User的UserName,确认关联过程中是否存在类型转换错误(比如将User实体直接赋值给ChatMessage.UserName而非User.UserName属性)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 20:14:59