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

EF Core的DbSet无SqlQuery定义,如何重置主键自增计数

报错原因

  • EF Core 从3.0版本开始就移除了旧版EF6中DbSet下的SqlQuery、ExecuteSqlCommand方法,API接口做了重构调整,所以会报CS1061找不到方法的错误。
  • 你写的DBCC CHECKIDENT语句参数错误,第一个参数应该填要重置自增序列的表名,不是数据库连接名,写不对的话就算SQL能执行也不会生效。

解决步骤

  1. 先确认你的项目已经正确安装了Microsoft.EntityFrameworkCore.SqlServer NuGet包,原生SQL执行的扩展方法都包含在这个provider包中。
  2. 直接修改你的DeleteCSVProxy方法代码即可,执行非查询类原生SQL需要通过DbContext的Database属性调用对应方法,修正后的代码如下:
public JsonResult DeleteCSVProxy(List<CSVFileProxy> proxyRecords)
{
    _proxydb.CSVFileProxys.RemoveRange(_proxydb.CSVFileProxys);              
    // 这里DBCC CHECKIDENT的第一个参数替换为你实际的表名,默认和DbSet属性名一致为CSVFileProxys
    _proxydb.Database.ExecuteSqlRaw("DBCC CHECKIDENT('CSVFileProxys', RESEED, 0)");                                                          
    _proxydb.SaveChanges();                      
    return Json(null);
}

补充说明

  • 如果你使用的是EF Core 7.0及以上版本,可以直接用更新的ExecuteSql方法替代ExecuteSqlRaw,使用逻辑完全一致。
  • 如果执行带用户传入参数的SQL语句,不要直接拼接字符串用ExecuteSqlRaw,会有SQL注入风险,替换为ExecuteSqlInterpolated方法传参即可。
  • 如果你需要执行查询SQL返回实体数据,原来的DbSet.SqlQuery对应的替代方法是_proxydb.Set<CSVFileProxy>().FromSqlRaw("查询SQL"),仅适用于查询场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:45:05