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

EF Core中Site.operatives集合导航属性使用数组类型报错问题问询

问题根因

报错本质是Entity Framework Core的内置校验规则不允许将数组类型作为集合导航属性,仅支持实现了ICollection<T>接口的类型(如List<T>、HashSet<T>等)。
你之前使用Azure SQL时未触发报错,是因为之前的运行场景下从未触发该导航属性的加载/校验逻辑,切换本地数据库后执行路径变化触发了模型校验,和数据库本身部署环境无关,属于代码中一直存在的隐性问题。

解决方案

根据你的业务场景二选一即可:

场景1:需要EF维护Site和User的导航关联关系

直接修改Site模型的operatives属性类型,替换为可被EF支持的集合类型即可,示例代码如下:

using System.Collections.Generic;

public class Site 
{
    // 替换为ICollection<User>或者List<User>都可
    public ICollection<User> operatives { get; set; } = new List<User>();
}

修改后如果模型结构有变化,按需添加EF迁移更新数据库结构即可。

场景2:operatives属性不需要EF做映射,仅作为自定义返回字段使用

如果你这个operatives是自己从存储过程/表值函数返回结果中自定义填充的字段,不需要EF维护关联关系,直接给该字段添加[NotMapped]注解,告诉EF跳过该属性的映射校验即可:

using System.ComponentModel.DataAnnotations.Schema;

public class Site 
{
    [NotMapped]
    public User[] operatives { get; set; }
}

该方案不需要修改现有属性类型,也不需要调整EF迁移配置,适合不需要用到导航查询的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:48:03