Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Add optimistic concurrency (RowVersion) to user-editable entities

Abierto
#52 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
csharp

Línea de trabajo

Comienza con LearnStack.Core/Data/Models/LearningResource.cs y LearnStack.Core/Services/LearningResourceService.cs:105-130; después, sigue la ruta de reordenación masiva del servicio en las líneas 157-176. Identifica el modelo ContentIdea correspondiente y su servicio, y verifica cómo DbUpdateConcurrencyException puede llegar al flujo visible para el usuario. Se considera terminado cuando las ediciones concurrentes muestran un mensaje de conflicto y la reordenación obsoleta del lado del cliente ya no descarta cambios silenciosamente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

Tier 2 — correctness

Problem

No entity carries a concurrency token, and the update services copy every field from the incoming object onto the tracked entity. Two browser tabs — very common in a Blazor Server app, and the resource list is also edited from dialogs — silently overwrite each other, last write wins. Drag-and-drop reordering makes this worse because it rewrites CustomOrder across many rows at once.

Evidence
  • LearnStack.Core/Data/Models/LearningResource.cs — no RowVersion
  • LearnStack.Core/Services/LearningResourceService.cs:105-130 — wholesale field copy
  • LearnStack.Core/Services/LearningResourceService.cs:157-176 — bulk CustomOrder rewrite
Proposed fix
  1. Add [Timestamp] public byte[]? RowVersion { get; set; } to LearningResource and ContentIdea.
  2. Handle DbUpdateConcurrencyException in the services and surface a "this item changed elsewhere" message instead of silently overwriting.
Acceptance criteria
  • Concurrent edits produce a conflict message rather than silent data loss
  • Reordering is resilient to a stale client-side list
Lenguaje dominante
HTML
Estrellas
10
Forks
0
Merge medio
2 h 35 min
PR fusionados (30 d)
21

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de kasuken/LearnStack

Todos los issues de kasuken/LearnStack

Issues similares

Más issues de Backend & API Design

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.