J'essaie d'étendre les classes linqtosql générées par le concepteur VS et j'ai besoin de déterminer si la valeur d'un champ spécifique a changé. Est-il possible pour moi d'accéder aux valeurs avant et après pour un champ dans la méthode DataContext Update pour une table/entité?Implémentation de la classe linqtosql partielle DataContext - comment inspecter les valeurs avant/après
Voici mon code:
public partial class DataClassesDataContext
{
partial void UpdateActivity(Activity instance)
{
this.ExecuteDynamicUpdate(instance);
//need to compare before and after values to determine if instance.AssignedTo value has changed and take action if it has
}
}
Je suis aussi ouvert à l'ajout d'une propriété à la classe d'entité d'activité pour signaler si la valeur a changé, mais je ne peux pas comprendre comment dire si la valeur a changé là non plus. Je ne peux pas simplement utiliser la méthode OnAssignedToChanged de la classe Activity car elle se déclenche à chaque fois que la valeur de la propriété est définie, pas nécessairement modifiée. J'utilise le contrôle ListView et LINQDataSource pour la mise à jour afin qu'il soit défini, peu importe quoi.
Je pensais aussi pouvoir utiliser la méthode OnAssignedToChanging mais l'instance Activity ne semble pas avoir de valeurs actuelles à ce point. Le code suivant ne fonctionne pas comme ceci. AssignedTo est toujours null.
partial void OnAssignedToChanging(int? value)
{
if (value != this.AssignedTo)
{
_reassigned = true;
}
}
méthode partielle? ;) – Kezzer
Oui, je manque quelque chose? Des méthodes partielles ont été ajoutées dans .NET 3.5 - cherchez-les si vous êtes intéressé :) –
Fondamentalement, une classe partielle peut avoir des méthodes partielles déclarées, mais pas définies. Vous pouvez ensuite les implémenter dans un fichier séparé. Si ce n'est pas le cas, cela fonctionne comme si tous les appels de méthode associés n'existaient pas. –