2010-07-31 19 views
6

Es una pregunta extraña que sé :)Patrón de repositorio, ¿guardar explícito o implícito?

Me gusta hacer las cosas de la manera correcta y tengo una duda.

que sé sobre la fabricación de una interfaz, usando DI ...

Mi pregunta es:

es mejor tener un método como "SaveChanges" que hay que llamar manualmente cada vez que añadir/eliminar/lo que sea un objeto ?:

_repo.Add(blah); 
_repo.SaveChanges(); 

¿O es mejor guardar los cambios dentro de cada método que modifique los datos?

Por otro lado, ¿debo tener la conexión siempre abierta o tengo que cerrarla?

Estoy aprendiendo DB4O y tengo un método Close que llamo cuando tengo que usar el repositorio en otro lugar (Como en otra ventana, cierro antes de abrir la ventana).

Gracias.

Respuesta

2

Personalmente me gusta que el método SaveChanges se separe. Creo que permite una mayor flexibilidad en las aplicaciones de consumo. Lo que significa que puede tener más reutilización.

Por ejemplo, tenerlo separado permite un enfoque de "transacción" donde el repositorio puede modificarse continuamente y luego, si todo es aceptable, se llama al método de salvar.

Por otro lado, si desea guardar inmediatamente sin una llamada por separado, puede crear otra versión del depósito que invoca el método de guardar durante las operaciones CRUD.

+0

Bastante, ahora entiendo cuándo poner el método o no. Gracias. –

0

Creo que en .Net DataSet también usan la función AcceptChanges() para "confirmar" las últimas modificaciones de datos. También en la base de datos Oracle hay un comando COMMIT para una tarea similar.

Cuestiones relacionadas