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

.NET 4.8下ASP.NET Web API项目EF Core不识别实体数据注解

问题:ASP.NET Web API项目中EF Core 3.1忽略实体数据注解

背景

基于.NET 4.8的ASP.NET项目,从EF 6迁移到EF Core 3.1(采用“伪代码优先”方式:删除.edmx文件并修改DbContext)。数据库架构已锁定,仅需保证现有功能正常,不允许适配数据库变更,且重新生成DbContext/实体会破坏大量代码,因此不可行。

异常现象

已有Web项目、多个控制台项目及Windows服务运行正常,但唯一的ASP.NET Web API项目持续出现以下问题:

  1. 初始化DbContext时,提示未定义主键,需手动在OnModelCreating中添加HasKey配置才能解决(仅针对不遵循约定的主键);
  2. 执行查询时,EF Core忽略实体类上的[Table]注解,使用DbSet属性名作为表名,导致报错。

示例代码与错误

执行查询代码:

using (var db = new EFContext())
{
    var statuses = db.FaxStatuses.FirstOrDefault();
}

抛出错误:

Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid object name 'FaxStatuses'

通过SQL Server Profiler观察到:

  • 正确应生成的SQL:
SELECT TOP 1 * FROM Global.FaxStatus
  • 实际生成的SQL:
SELECT TOP 1 * FROM Global.FaxStatuses

已做排查

  • 确认该Web API项目中所有EF Core相关库(基础库、SqlServer、Relational、Proxies、Abstractions)的版本与正常项目完全一致;
  • 检查启动代码,未发现会干扰EF Core配置的内容;
  • DbContext和实体类均位于所有项目共享的类库中,其他项目使用正常。

补充信息

DbContext中FaxStatus的DbSet声明:

public DbSet<FaxStatus> FaxStatuses { get; set; }

OnModelCreating中的配置:

modelBuilder.Entity<FaxStatus>();

疑问

为何唯独这个Web API项目会忽略实体类上的数据注解?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 15:31:01