EF Core 6 从 oracle 序列获取 nextval

问题描述 投票:0回答:1

在 EF Core 6 中,您可以映射序列并将其用于映射的实体。

序列映射

 protected override void OnModelCreating(ModelBuilder b)
 {
     b.HasSequence<int>("seq_certificate_trade_request", "ts");
 }

我只需要下一个序列值,但没有使用它的类型。

今天我使用以下代码

public int GetNewCertificateTradeRequestIdentity()
{
    using var command = _context.Database.GetDbConnection().CreateCommand();
    command.CommandText = "SELECT ts.seq_certificate_trade_request.NEXTVAL FROM DUAL";
    _context.Database.OpenConnection();
    using var reader = command.ExecuteReader();
    reader.Read();
    return reader.GetInt32(0);
}

但是如果能使用 EF6 中内置的代码就好了

那么我可以直接调用序列seq_certificate_trade_request吗?

oracle entity-framework-6 sequence
1个回答
0
投票

实际上可以自定义

OnModelCreating()
方法,以便在需要时(例如,在
INSERT
操作期间)自动从序列中恢复下一个值。

看这里: https://learn.microsoft.com/en-us/ef/core/modeling/sequences

© www.soinside.com 2019 - 2024. All rights reserved.