Estoy usando una sola instancia del escenario DbContext
para sombrear toda la copia de la base de datos localmente en una aplicación WPF. He oído que esto es una mala práctica, pero mi base de datos es pequeña y necesito una copia completa de ella localmente mientras se ejecuta la aplicación.Entity Framework 4.1 DbSet Reload
un método de extensión para IQueryable
, Load()
me permite precargar los elementos de un DbSet<>
, de modo que pueda unir las cosas a la propiedad local de DbSet<>
. Los datos en la base de datos cambian rápidamente, así que quiero SaveChanges()
y volver a cargar todo, incluso los objetos que ya están rastreados. Llamar nuevamente al método Load()
no actualiza los elementos que se rastrean pero que no están marcados como cambiados, que ya están cargados.
¿Cuál es el método preferido para volver a cargar los artículos precargados en un DbSet<>
? Fuera de mi cabeza, solo puedo pensar en llamar al SaveChanges()
, luego revisar todas las entradas y establecer tanto los valores originales como los rastreados en los valores actuales en la base de datos, luego Load()
cualesquiera objetos nuevos que puedan haberse agregado. En mi caso, no es posible eliminar objetos, pero es posible que tenga que admitir la eliminación de elementos a largo plazo. Esto no parece correcto, debería haber una forma de dejar todo y volver a cargar. Parece que es más fácil olvidar mi contexto y comenzar de nuevo, pero todos los elementos en WPF ya están vinculados al Local´ObservableCollection<>
, y esto simplemente arruina la interfaz.
Gracias por su respuesta, estoy algo perdido, porque he leído que en mi situación preferida es exactamente lo contrario. Revisaré estos temas y regresaré. – Gleno
No tendré cambios en las relaciones, ni eliminaciones en la base de datos. Comenzaré otra pregunta más tarde e intentaré explicar por qué no puedo tener un DbContext de vida corta. Realmente espero que puedan aportar algunos aportes valiosos. – Gleno