使用 EF Core 3.1 获取 oracle 数据库序列的 "NEXT VALUE FOR"

Getting "NEXT VALUE FOR" for a oracle database sequence using EF Core 3.1

我正在编写一个 Web API 并尝试从 oracle 数据库中获取序列并在

的帮助下创建一个方法
var p = new Oracle.ManagedDataAccess.Client.OracleParameter("@result", Oracle.ManagedDataAccess.Client.OracleDbType.Int32);
            p.Direction = System.Data.ParameterDirection.Output;
            Context.Database.ExecuteSqlRaw("set @result = next value for Social_Media_Clip_Seq", p);
            var nextVal = (int)p.Value;

但面临错误 ORA-00922:选项缺失或无效

任何人都可以帮我找到丢失的东西或者有任何其他方法可以找到解决方案 提前致谢

除了 Oracle,我对您使用的其他工具一无所知。

但是:link您发布的内容与 MS SQL 服务器有关。

在Oracle中,sequence_name.nextval返回一个序列下一个值;像这样:

SQL> select seq_test.nextval from dual;

   NEXTVAL
----------
         4

SQL>

我不知道如何将它实现到您发布的代码中。

如果您的 API 只需要查找 nextval 以将新记录插入数据库,也许您可​​以将模型配置为直接使用序列来生成新 ID:

protected override void OnModelCreating(ModelBuilder modelBuilder) {
...
    modelBuilder.HasSequence<long>("SEQUENCE_DB_NAME");
    modelBuilder.Entity<C#TYPENAME>(entity =>
            {
                entity.Property(e => e.Id)
                    .HasColumnName("ID")
                    .ValueGeneratedOnAdd()
                    .UseHiLo("SEQUENCE_DB_NAME");
            });

来源: https://docs.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-implementation-entity-framework-core#the-hilo-algorithm-in-ef-core

但是,我的环境是EF Core 5.0.13,Oracle EntityFrameworkCore 5.21.5, Oracle 数据库版本为 19.3.