Tengo una ventana que muestra la información del cliente. cuando se carga la ventana, llamo al método LoadCustomer()
desde el constructor que carga la información del cliente de la base de datos de forma asincrónica, lo que establece la propiedad CurrentCustomer
. y luego la interfaz de usuario se actualiza porque está vinculada al CurrentCustomer
.llamadas asincrónicas dentro de obtener acceso - ¿es una buena práctica?
private void LoadCustomer(Guid customerID)
{
var customerContext = new CustomerContext();
var customerQuery = customerContext.GetCustomersQuery()
.Where(e => e.CustomerID == customerID);
customerContext.Load(customerQuery,
loadOperation =>
{
CurrentCustomer = loadOperation.Entities.SingleOrDefault();
}, null);
}
El programador senior me ha dicho que es mejor poner esta lógica dentro de acceso get de CurrentCustomer, porque entonces
- las llamadas a la base de datos utilizarán la carga diferida, y
- la refactorización lo haría ser más fácil.
¿Es una buena práctica colocar las llamadas de la base de datos asincrónicas dentro del acceso de acceso de la propiedad?
Las cargas no pertenecen a * getter *. Los efectos secundarios no serían anticipados al leer el código. Es más probable que el contexto se mueva, por lo que es mejor mantenerlo todo legible. A veces * senior * solo significa * old *. :) –