work unit pattern mvc genericrepository framework antipattern c# entity-framework-6 repository-pattern

unit - repository pattern c# mvc



Marco de entidad: Insertar filas de clave externa cuando se actualiza la tabla (0)

Al utilizar Entity Framework 6 y un patrón de repositorio, intento actualizar una fila, donde la fila existente tiene un nuevo objeto de clave externa asociado. Por ejemplo, ya existe un registro de Person . La Person tiene un nuevo Dog . Entonces ahora la clase Person tiene una propiedad Dog instanciada y poblada con datos.

Este es mi método de actualización:

public async Task<TObject> UpdateAsync(TObject updated, int key) { if (updated == null) return null; var existing = await this._context.Set<TObject>().FindAsync(key); if (existing != null) { this._context.Entry(existing).CurrentValues.SetValues(updated); } await this._context.SaveChangesAsync(); return existing; }

Y lo llamo haciendo lo siguiente:

personRecord.Dog = new Dog () { Name = "Max", Age = 7 }; await this.PersonRepository.UpdateAsync(personRecord, personRecord.Id)

Pero no se está insertando ningún nuevo registro de Dog en la base de datos. ¿Qué estoy haciendo mal? ¡Gracias por adelantado!