es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo encontrar el ID de un nuevo objeto creado utilizando el método NextVal de la secuencia de Oracle usando Linq2DB?

Estamos utilizando Linq2DB para leer y escribir en una tabla de Oracle, con una secuencia de Oracle para rastrear el siguiente valor para la clave primaria.

He descubierto que agrego un atributo SequenceName a la propiedad ID, y Linq2DB llama a MY_SEQ.NextVal:

public class myLinq2DBClass
{
[Column, SequenceName(“MY_SEQ”)]
public int Id { get; set; }
}

Y luego creo un nuevo objeto de esta manera:

var newObject = new myLinq2DBClass();
db.MyLinq2DBTable.Insert(newObject);

var newID = newObject.Id; // ¿Aún es cero?

¿Hay alguna manera de obtener el nuevo ID?

Me preguntaba si Insert lo devolvería, pero devuelve el número de filas insertadas.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de obtener el nuevo Id en Linq2DB cuando se utiliza una secuencia de Oracle para la clave primaria. Después de llamar al método Insert en la tabla de Linq2DB, puedes llamar a la propiedad ID en el nuevo objeto que fue insertado. Esta propiedad debería ser automáticamente establecida al siguiente valor de la secuencia de Oracle. Por lo tanto, en el ejemplo de código proporcionado, puedes obtener el nuevo ID de la siguiente manera:

    var nuevoObjeto = new miClaseLinq2DB();
    db.MiTablaLinq2DB.Insert(nuevoObjeto);
    
    var nuevoID = nuevoObjeto.Id; // ahora debería tener el nuevo valor de ID
    

    Ten en cuenta que la propiedad Id en la clase miClaseLinq2DB debe tener el atributo [Column] y el nombre de la secuencia especificado como se muestra en el ejemplo de código original.

Comments are closed.