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

使用Oracle Provider+EF Core7在LinqPad获取序列值遇ExecuteQuery缺失问题

LinqPad中EF Core获取Oracle序列下一个值的解决办法

你之前用的ExecuteQuery是LinqPad针对LINQ to SQL的方法,EF Core不支持,给你三种可行方案:

  • 方案一:用EF Core的标量查询方法
    通过DbContext的Database对象直接执行SQL获取序列值,代码如下:

    var newID = this.Database.SqlQuery<decimal>("SELECT SEQ_PERSON_ID.NEXTVAL FROM DUAL").First();
    
  • 方案二:通过实体集映射查询
    借助实体的属性映射来提取序列值,前提是实体的ID属性类型和序列返回值匹配:

    var newID = this.Set<Person>().FromSqlRaw("SELECT SEQ_PERSON_ID.NEXTVAL AS Id FROM DUAL").Select(p => p.Id).First();
    
  • 方案三:临时切换到SQL模式执行
    如果只是临时获取序列值,直接把LinqPad的查询模式改成SQL,执行这条语句即可:

    SELECT SEQ_PERSON_ID.NEXTVAL FROM DUAL
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:16:01