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

M1 Mac Parallels环境下EF Core读取SQL Server Express报类型转换错误

解决M1 Mac Parallels中SQL Server Express + EF Core的类型转换错误

以下是几个经过验证的排查和解决方向:

  • 检查数据库排序规则与编码一致性
    远程数据库和本地Parallels中的SQL Server实例可能使用不同的排序规则,即便列类型都是nvarchar,也可能导致EF Core读取时将底层存储的二进制数据误判为字符串。
    先对比两者的排序规则:

    SELECT name, collation_name FROM sys.databases WHERE name = '你的数据库名称'
    

    如果本地库排序规则和远程不一致,修改本地库的排序规则(操作前务必备份数据):

    ALTER DATABASE 你的数据库名称 COLLATE 远程库的排序规则名称;
    
  • 校验EF Core模型映射配置
    有可能模型中的字符串属性被错误配置,或者自动生成的模型和实际数据库列不匹配:

    • 检查Fluent API配置,确保所有字符串属性都明确指定了nvarchar类型,比如:
      modelBuilder.Entity<你的实体类>()
          .Property(p => p.你的字符串属性)
          .HasColumnType("nvarchar(255)");
      
    • 用Scaffold-DbContext命令重新生成模型,对比原有模型是否存在属性类型错误(比如被误生成byte[]类型)。
  • 调整SQL Server兼容性级别
    本地SQL Server实例的兼容性级别如果低于远程数据库,可能导致数据存储格式差异:
    查询远程库兼容性级别:

    SELECT name, compatibility_level FROM sys.databases WHERE name = '远程数据库名称'
    

    将本地库设置为相同级别(比如150对应SQL Server 2019):

    ALTER DATABASE 你的数据库名称 SET COMPATIBILITY_LEVEL = 150;
    
  • 重新备份还原数据库
    备份还原过程中可能出现数据损坏,导致nvarchar列被写入二进制数据:

    • 重新从远程库生成完整备份,确保备份文件无损坏;
    • 尝试用SQL Server的生成脚本功能(包含所有数据),在本地实例重新创建数据库,替代直接还原备份的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:23:24