Cómo crear un nuevo valor único en el contexto de la base de datos.
Tengo una tabla de la siguiente manera:
Eventos:
ID IDTarea Fecha y Hora
1 1 6 de diciembre de 2021, 10:15:21.086
2 1 6 de diciembre de 2021, 10:16:21.086
3 2 6 de diciembre de 2021, 11:15:21.086
4 1 7 de diciembre de 2021, 10:15:21.086
5 3 7 de diciembre de 2021, 10:17:21.086
6 3 8 de diciembre de 2021, 10:19:21.086
Básicamente, se están realizando tareas y quiero registrar eventos sobre estas tareas.
Para ello, he creado una tabla que agrega una nueva entrada cada vez que se registra un nuevo evento. El problema es que puedo tener múltiples eventos con la misma ID de Tarea, pero me gustaría poder decirle al DbContext “Toma el primer valor no utilizado disponible”.
¿Cómo puedo cambiar el ?? default(int)
para en su lugar obtener el primer valor no utilizado? Así que si no le digo a qué tarea pertenece, simplemente crea una nueva tarea para ella.
davy.ai
Para obtener el primer valor no utilizado para TaskID, puedes modificar el método
CreateWareHouseEvent
de la siguiente manera:Aquí, primero verificamos si se ha proporcionado un TaskID. Si se ha proporcionado, utilizamos ese valor tal cual. Sin embargo, si TaskID es nulo, recuperamos una lista de todos los TaskID existentes en la base de datos y luego recorremos todos los enteros desde 1 hasta el número de TaskID existentes + 1. Para cada entero, verificamos si existe en la lista de TaskID existentes y, si no existe, establecemos
warehouseEvent.TaskId
en ese valor y salimos del bucle. Esto nos dará el primer valor no utilizado para TaskID.