J'ai une fenêtre qui montre l'infomation du client.
Lorsque la fenêtre charge, j'appelle est-il une bonne pratique de mettre des appels de base de données ASYNC à l'intérieur de l'accessoir de la propriété? P> P> LoadCustomer () Code> Procédé du constructeur qui charge les informations client à partir de la base de données asynchroneusement, qui définit la propriété
actuelleCustomer code>.
et ensuite, l'interface utilisateur est mise à jour car elle est liée au
courritique de l'encombrement code>.
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);
}
3 Réponses :
Habituellement si quelque chose implique également de faire quelque chose d'autre aussi cher, vous devez utiliser une méthode getter complète juste à cet effet: P> var value = obj.Something;
Il est correct à ce sujet étant chargé de paresseux dans l'accesseur - puisque l'appel ASYNC ne sera pas effectué sur la création d'objets. Il ne sera fait que lorsque l'accesseur est appelé. P>
Il prévoit également de ne pas le laisser dans l'accesseur de propriété, mais le refactorise ailleurs. Il est plus facile de refracteur lorsque l'appel est déjà isolé dans l'accesseur. P>
Ce n'est toutefois pas une bonne idée de quitter l'appel ASYNC dans l'accesseur, mais cela n'a pas l'air de pouvoir y rester. P>
On dirait que votre device senior a manqué le asynchrone em> nature du code. Le seul moyen de déplacer votre code sur le getter d'une propriété serait de bloquer le fil d'appel jusqu'à la fin de l'opération asynchrone et il y a une valeur de retour. Ce serait une propriété très mal élevée. P>
Les charges n'appartiennent pas à un getter i>. Les effets secondaires ne seraient pas prévus de lire le code. Il est plus probable que le contexte soit déplacé, alors préférable de la maintenir. Parfois, senior i> signifie juste vieux i>. :)